并查集初学——围巾的纠结
2016-04-07 21:35
204 查看
围巾的纠结
Description
小破想要织一条围巾,可是她并不擅长于织围巾。由于工作太忙,每天她都只能织一点。为了快速的织完围巾,她决定直接把毛线球连在一起。围巾上有球球还是非常可爱的嘛~
Input
多组测试数据
每组测试数据第一行有两个整数n,m(1 <= n <= 10000, 1 <= m <= 1000000)
接下来有m行,每行有两个数a,b,表示将a和b号毛球织到一起。
Output
对于每组测试数据,如果她能还原,则输出”YES”, 否则输出”NO”
Sample Input
5 4
1 2
2 3
3 1
1 4
5 4
1 2
2 3
3 4
4 5
Sample Output
NO
YES
题目传送门:围巾的纠结ieee点此可交题
Description
小破想要织一条围巾,可是她并不擅长于织围巾。由于工作太忙,每天她都只能织一点。为了快速的织完围巾,她决定直接把毛线球连在一起。围巾上有球球还是非常可爱的嘛~
于是小破去商店买了n个毛线球。每天晚上睡觉之前,她就抽出一点时间,把其中两个原本分开的毛线球织在一起。由于是睡觉之前干活,人太困了,过了m天之后,她发现自己完全织乱了,于是她决定拆掉重织。可是由于她的织法过于特殊,她发现,一旦几个毛线球被织成了一个圈,就不能完好的解开了。现在她想知道,她还能把这条"围巾"还原吗?
Input
多组测试数据
每组测试数据第一行有两个整数n,m(1 <= n <= 10000, 1 <= m <= 1000000)
接下来有m行,每行有两个数a,b,表示将a和b号毛球织到一起。
Output
对于每组测试数据,如果她能还原,则输出”YES”, 否则输出”NO”
Sample Input
5 4
1 2
2 3
3 1
1 4
5 4
1 2
2 3
3 4
4 5
Sample Output
NO
YES
#include<stdio.h> int father[10005]; int v1[1000005],v2[1000005]; int m,n; void chuhua() { int i; for(i=1;i<=n;i++) { father[i]=i; } } int getfather(int x) { int a=x; while(a!=father[a]) { a=father[a]; } father[x]=a; return father[x]; } void mix(int x,int y) { int fa=getfather(x); int fb=getfather(y); if(fa!=fb) { father[fa]=fb; } } int main() { int i; while(~scanf("%d%d",&n,&m)) { chuhua(); int p=0; for(i=0;i<m;i++) { scanf("%d%d",&v1[i],&v2[i]); } for(i=0;i<m;i++) { if(getfather(v1[i])==getfather(v2[i])) { p=1; break; } mix(v1[i],v2[i]); } if(p==0) { printf("YES\n"); } else { printf("NO\n"); } } return 0; }
题目传送门:围巾的纠结ieee点此可交题
相关文章推荐
- 在Dynamic Web Project中新建jsp报错
- USACO3.2 还是暴力+bitset学习
- C++直接初始化与复制初始化的区别深入解析
- 图论算法之最小生成树
- DOM XSS的原理与防护
- nginx 301跳转到带www域名方法rewrite(转)
- 文章内容页图片自动居中,自适应手机,宽度100%
- 数据结构(8):二叉树的存储结构
- FFMpeg处理RTMP流的总结
- 树形dp-hdu1561
- git安装及常用命令
- requireJS学习
- 关于intent.setFlags()的一些故事
- 构建之法第八章读后感与团队项目的一些想法
- 实现大数四则运算
- HNOI2016上半场考试总结
- Bigger is Better
- linux下ftp服务器ARM移植
- ps树叶的雕刻
- 去除listview和gridview的点击效果