河边的石头 ( 长沙理工大学第十一届程序设计竞赛)(DFS)
来源:互联网 发布:有高跟鞋也有跑鞋 知乎 编辑:程序博客网 时间:2024/04/28 14:13
河边的石头
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65535/65535K (Java/Other)
Total Submission(s) : 5 Accepted Submission(s) : 3
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
ElemenT陪小红在小河边上玩,他发现了河里有许许多多的石头,每一个石头都有一定的重量且有自己的编号,石头的重量两两不相等。
ElemenT随机抽取两个石头,假设编号是A和B,他会记录A比B重还是B比A重,然后将A和B再放回河里。
ElemenT这样操作了M次之后,小红觉得ElemenT太无聊了,当他又一次从河里捞出两个石头的石头,
小红突然问他:从你之前记录的石头重量的比较结果 能不能直接推断出当前两个石头的重量谁大谁小?
ElemenT想让你帮帮他,从已有的记录能不能推断当前的关系。
ElemenT随机抽取两个石头,假设编号是A和B,他会记录A比B重还是B比A重,然后将A和B再放回河里。
ElemenT这样操作了M次之后,小红觉得ElemenT太无聊了,当他又一次从河里捞出两个石头的石头,
小红突然问他:从你之前记录的石头重量的比较结果 能不能直接推断出当前两个石头的重量谁大谁小?
ElemenT想让你帮帮他,从已有的记录能不能推断当前的关系。
Input
多组数据,对于每组数据:首先输入一个正整数N表示石头的数量,(编号为1-N)
接着输入一个M,代表ElemenT已经进行了M次比较并记录了结果,接下来M行,
每行两个正整数,中间用空格隔开,表示第一个石头的编号和第二个石头的编号,且第一个石头比第二个石头重。
最后输入两个正整数代表 最后两个ElemenT拿出的石头的编号。
N, M < 100, 所有的编号均为正整数,且不会出现矛盾的情况。
接着输入一个M,代表ElemenT已经进行了M次比较并记录了结果,接下来M行,
每行两个正整数,中间用空格隔开,表示第一个石头的编号和第二个石头的编号,且第一个石头比第二个石头重。
最后输入两个正整数代表 最后两个ElemenT拿出的石头的编号。
N, M < 100, 所有的编号均为正整数,且不会出现矛盾的情况。
Output
对于每一组数据,如果第一个石头重,则输出"first",如果第二个重,则输出"second",如果无法得出结论,则输出"unknow"。
Sample Input
4 41 22 41 34 32 3
Sample Output
first
Statistic | Submit | Back
本来想用拓扑排序的 后来一想 算了 深搜一下把。。。。
使用vecotr存贮边 因为是判断 a b 哪个更重 我们不知道哪个更重 所以两次深搜 分别为dfs(a,b),dfs(b,a)
#include <stdio.h>#include <vector>#include <string.h>using namespace std;vector<int>map[105];int result;bool vis[105][105];bool dfs(int x,int y){// printf("%d ",x); if(x==y) return true; for(int i=0;i<map[x].size();i++) { if(!vis[x][map[x][i]]) { vis[x][map[x][i]]=true; if(dfs(map[x][i],y)) return true; } } return false;}int main(){ int n,m; while(~scanf("%d %d",&n,&m)) { int a,b; memset(map,0,sizeof(map)); while(m--) { scanf("%d %d",&a,&b); map[a].push_back(b); } scanf("%d %d",&a,&b); if(a==b) { puts("unknow"); continue; } result=0; memset(vis,false,sizeof(vis)); if(dfs(a,b)) result=1; if(!result) { memset(vis,false,sizeof(vis)); if(dfs(b,a)) result=2; } if(result==1) puts("first"); else if(result==2) puts("second"); else puts("unknow"); } return 0;}
0 0
- 河边的石头 ( 长沙理工大学第十一届程序设计竞赛)(DFS)
- 奇怪的二进制(长沙理工大学第十一届程序设计竞赛)
- 蛇形矩阵 (长沙理工大学第十一届程序设计竞赛)
- 请你帮帮小王 (长沙理工大学第十一届程序设计竞赛)
- 上升的子串 (长沙理工大学第十一届程序设计竞赛)
- 补番计划 (长沙理工大学第十一届程序设计竞赛)(双端队列+set容器+string)
- 最长子串(长沙理工大学第十一届程序设计竞赛 离线 做了n天.....崩溃了)
- 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)D 数圈圈【DFS||数位DP】
- 哈尔滨理工大学第五届ACM程序设计竞赛(热身)
- 哈尔滨理工大学第七届程序设计竞赛(G.Great Atm)
- 哈尔滨理工大学第七届程序设计竞赛初赛(低年级组)
- 福州大学第十一届程序设计竞赛E fzuoj2171(线段树)
- CCPC第十一届东北地区大学生程序设计竞赛(2017) 总结
- 第十一届湖南大学生程序设计竞赛 阶乘除法(思维)
- 参加浙江中医药大学第十一届程序设计竞赛(ACM赛制)的总结
- 师创杯”山东理工大学第九届ACM程序设计竞赛(网络同步赛)--I皮卡丘的梦想2
- 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)A所有情况的和
- 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)A 所有情况的和
- LeetCode - ZigZag Conversion
- [ 浅谈web网站验证码生成方案之一 ]
- Linux新增硬盘分区及挂载
- 欢迎使用CSDN-markdown编辑器
- Android学习笔记4 图片和杂谈
- 河边的石头 ( 长沙理工大学第十一届程序设计竞赛)(DFS)
- 淘汰赛车
- 我8月份可能在家_1.1.1
- 51nod Dijkstra算法
- Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的压缩与解压 zip格式(转)
- 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
- 【leetcode】292. Nim Game
- 杭电2014
- [STL] list的使用