哈理工oj hrbust 2238 围巾的纠结【并查集】
2018-04-04 11:10
267 查看
围巾的纠结 | ||||||
| ||||||
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 <bits/stdc++.h> using namespace std; int vis[10005]; int n,m; int flag=0; int findx(int a) { return vis[a] == a ? a : vis[a] = findx(vis[a]); //return vis[a] != a ? vis[a] = findx(vis[a]) : a; } void join(int a,int b) { int aa=findx(a),bb=findx(b); if(aa!=bb) vis[aa]=bb; else flag=1; return; } int main() { while(~scanf("%d%d",&n,&m)) { flag=0; for(int i=1; i<=n; i++) { vis[i]=i; } while(m--) { int a,b; scanf("%d%d",&a,&b); join(a,b); } if(flag) printf("NO\n"); else printf("YES\n"); } return 0; }
相关文章推荐
- 哈理工OJ 2238—围巾的纠结(并查集判环)
- hrbust 哈理工oj 2026 势力较量【并查集】
- hrbust 哈理工oj 1418 夏夜星空【带权并查集】
- 哈理工 校赛(热身赛)2238 围巾的纠结(判断回路问题)
- 哈理工oj hrbust 1725 Virus Outbreaking【并查集】
- hrbust 1658,哈理工oj 1658 一笔画【并查集过】
- hrbust 哈理工oj1490 咒语【基础并查集】
- hrbust 哈理工oj 2016 势力较量 (并查集)
- 哈理工oj hrbust 1725 Virus Outbreaking【并查集】
- hrbust/哈理工oj 1507 水神的栅栏【计算几何+并查集】
- hrbust 哈理工oj 1360 Leyni的国家III【多路径并查集】
- hrbust/哈理工oj 1617 回家【BFS+BFS】
- 哈理工hrbust OJ 2225 解题报告
- 哈理工oj(acm.hrbust.edu.cn) 1494 ,zoj1311,poj1144【求割点,Targan算法】
- hrbust 哈理工oj 2038 联系网络【MST】【最小生成树】
- hrbust 1954 哈理工oj 1954 神奇的国家【图论+邻接表+dfs】
- hrbust 哈理工oj 2179 组合【基础dfs过】
- hrbust 1578 哈理工oj 1578 Prince and little Princess-2【双向队列】
- hrbust 1069 哈理工oj Bee Movie【计算几何】【学习叉乘】
- hrbust 2080 哈理工oj 2080 链条【简单贪心】