1. 程式人生 > >hdu1272 小希的迷宮(並查集判環)

hdu1272 小希的迷宮(並查集判環)

滿足題意的即無環,只有一個連通塊。用並查集判斷。
坑爹的是居然有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; }