博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并查集图冲突hdu1272
阅读量:5979 次
发布时间:2019-06-20

本文共 1112 字,大约阅读时间需要 3 分钟。

还是属于并查集的变形

两个点仅仅有一条路径连通

给出的两个点事先都是属于两个集合的

须要给出的着条边构成一个集合

算法复杂度还是挺高的

每一个我都循环了100000次

set2数组没清空 wrong了一次

#include
#include
#include
using namespace std;int sett[100000 + 100];int set2[100000 + 100];int find2(int x){ while(x!=sett[x]) x=sett[x]; return x;}int merge2(int fx,int fy){ if(fx == fy) return 1; else if(fx > fy) sett[fx]=fy; else sett[fy] = fx; return 0;}int main(){ for(int i=1;i<=100000;i++) sett[i]=i; int x,y; int flag=1; while(scanf("%d%d",&x,&y)&&x!=-1&&y!=-1) { if(x==0&&y==0){ int countt=0; for(int i=1;i<=100000;i++) if(sett[i]==i&&set2[i]) countt++; if(countt >= 2) flag=0;// printf("countt %d\n",countt); if(flag) printf("Yes\n"); else printf("No\n"); flag = 1; for(int i=1;i<=100000;i++) sett[i]=i; memset(set2,0,sizeof(set2)); } else { set2[x]=1,set2[y]=1; int fx = find2(x); int fy = find2(y); if( merge2(fx,fy) ) { flag=0; } } } return 0;}

转载地址:http://qyoox.baihongyu.com/

你可能感兴趣的文章
Java程序员须知
查看>>
有用的网站
查看>>
排序——快速排序算法
查看>>
nginx各种常用的配置
查看>>
groupadd命令
查看>>
面试常考点:http和https的区别与联系
查看>>
python多线程与多进程
查看>>
系统架构:架构体系
查看>>
遇重大灾害,缅怀在灾害中遇难的同胞,网站变灰色
查看>>
Hibernate笔记
查看>>
微软的 windows live mail 邮件存放位置更改、ldap设置
查看>>
oracle dg 报错: ORA-16057: DGID from server not in Data Guard configuration
查看>>
word或wps中如何插入代码
查看>>
Oracle10g 手工建库
查看>>
Louts Notes 8.5 文件夹视图异常
查看>>
第十六讲 循环遍历文件和元组
查看>>
Sql Server系列:流程控制语句
查看>>
纯文本邮件内容需要注意什么
查看>>
linux上的文件管理类命令
查看>>
通过Bandwidthd 监控Ip使用情况
查看>>