No
每两组数据之间有一个空行!!!
坑爹的格式!!!!让我PE好几次;
注意这句话:小希希望任意两个房间有且仅有一条路径可以相通(除非走了回头路)!!!
代码:
#include#include #include #include #include #include using namespace std;int a[100005],b[100005],t;int find (int x){ int p=x; while(a[p]!=p) p=a[p]; a[x]=p; return p;}int cmp(int x,int y){ int c=find(x); int d=find(y); if(c!=d) a[c]=d; else t=0; //如果根节点相同的话,说明x,y之间有通道; }int main(){ int i,j,k,n,m,p; while(cin>>n>>m) { p=1; if(n==0&&m==0) { p=0; t=1; } if(n==-1&&m==-1) break; if(p) {for(i=0;i<=100000;i++) {a[i]=i;b[i]=0;} t=1; b[n]=1;b[m]=1; cmp(n,m); while(cin>>n>>m) { if(n==0&&m==0) break; b[n]=1;b[m]=1; cmp(n,m); } } k=0; for(i=0;i<=100001;i++) { if(a[i]==i&&b[i]) k++; if(k>1) //如果根节点数大于1的话,表示有多个集合; {t=0; break; } } if(t==0)cout<<"No"<