hdu1272 小希的迷宮(並查集判環)
阿新 • • 發佈:2019-01-02
滿足題意的即無環,只有一個連通塊。用並查集判斷。
坑爹的是居然有0 0這種資料,連通塊也可以為0個hh
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 100010
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=x*10 +ch-'0',ch=getchar();
return x*f;
}
int fa[N];
bool vis[N];
inline int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
int main(){
// freopen("a.in","r",stdin);
while(1){
int tot=0,cir=0;
memset(fa,0,sizeof(fa));
memset(vis,0,sizeof(vis));
while(1){
int x=read(),y=read();
if(x==-1) return 0;
if(x==0) break;
if(!vis[x]) fa[x]=x,vis[x]=1;
if(!vis[y]) fa[y]=y,vis[y]=1;
int xx=find(x),yy=find(y);
if(xx==yy) cir=1;
else fa[xx]=yy;
}
for(int i=1;i<=100000;++i) if (fa[i]==i) tot++;
if(!cir&&tot<=1) puts("Yes");
else puts("No");
}
return 0;
}