Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
68269 老师 通信系统 C++ 通过 100 142 MS 256 KB 642 2023-02-03 17:22:37

Tests(1/1):


#include<bits/stdc++.h> using namespace std; int p[1100]; int find(int x){ if(p[x]!=x) p[x]=find(p[x]); return p[x]; } int main(){ int n,m; while(scanf("%d%d",&n,&m),n||m){ int flag=0,cnt=0; memset(p,-1,sizeof p); // 初始化并查集 for(int i=1;i<=n;i++) p[i]=i; while(m--){ int a,b; cin>>a>>b; int pa=find(a),pb=find(b); if(pa!=pb) p[pb]=pa; // 加入统一集合 else flag=1; // flag为1表示出现了环 } // 判断是否有多个集合 for(int i=1;i<=n;i++){ if(p[i]==i) cnt++; } if(flag || cnt>1) cout<<"No"<<endl; else cout<<"Yes"<<endl; } return 0; }


测评信息: