Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
68183 | 张志鹏 | 通信系统 | C++ | 解答错误 | 0 | 302 MS | 260 KB | 668 | 2023-02-02 16:51:02 |
#include<bits/stdc++.h> using namespace std; int n,m,flag; int p[1001],cnt[1001]; int init(int x){ p[x]=x; } int find(int x){ if(p[x]==x) return x; else return find(p[x]); } int merge(int a,int b){ p[b]=a; } int main(){ while(1>0){ flag=0; cin>>n>>m; if(n==0&&m==0) break; for(int i=1;i<=n;i++) init(i); for(int i=1;i<=m;i++){ int a,b; cin>>a>>b; int a1=find(a); int b1=find(b); if(a1!=b1) merge(a1,b1); } for(int i=2;i<=n;i++){ int a1=find(1),b1=find(i); p[1]=a1,p[i]=b1; if(a1!=b1) flag=1; else flag=0; } if(flag==1) cout<<"NO"; else cout<<"YES"; cout<<endl; } return 0; }