小希的迷宫(hdu 1272)
2016-05-15 20:13
363 查看
判断是否有环,是否为连通图,用并查集。
点并不全,要标记哪些点出现了。
点并不全,要标记哪些点出现了。
#include<iostream> #include<stdio.h> #include<math.h> #include<string.h> #include<vector> #include<list> #include<algorithm> using namespace std; int a[100000]; int solve(int x,int y); int find(int x); int book[100000]; int main(){ int x,y; while(1){ int s = 0; int num = -1; memset(a,0,sizeof(a)); memset(book,0,sizeof(book)); while(1){ scanf("%d%d",&x,&y); if(x==-1&&y==-1) return 0; num = max(num,max(x,y)); book[x] = book[y] = 1; if(x==0&&y==0) break; else{ if(s) continue; s = solve(x,y); } } if(s) printf("No\n"); else{ for(int i=1;i<=num;i++){ if(book[i]&&a[i]==0) s++; } if(s>1) printf("No\n"); else printf("Yes\n"); } } return 0; } int solve(int x,int y){ int c = find(x); int b = find(y); if(c==b) return 1; else a[c] = b; return 0; } int find(int x){ if(a[x]==0) return x; else{ a[x] = find(a[x]); return a[x]; } }
相关文章推荐
- tomcat+nginx+redis实现均衡负载、session共享(二)
- 移动web开发笔记
- Java中get,post乱码的区别
- mysql5.7中的一个update order by排名问题解决办法(一条sql搞定排名)
- Block 代码块中循环引用问题
- PAT (Advanced Level) 1004. Counting Leaves (30)
- WebSocket 是什么原理?为什么可以实现持久连接
- xml解析
- electron折腾记(二)——关于窗口
- Session
- PHP 微信开发
- BZOJ1972: [Sdoi2010]猪国杀
- 2016"百度之星" - 资格赛(Astar Round1)Problem A (乘法逆元)
- Java学习笔记-流操作
- unity 入门学习之(二)脚本学习
- SpringMVC源代码学习(四)九大组件上
- 蓝桥杯历届试题---蚂蚁感冒
- Power Gating的设计(模块)
- 虚拟网桥配置
- git常用命令汇总