思路
- BFS遍历一下统计需要几次初次调用BFS,即为他的连通分量。
注意
代码
#include<vector>
using namespace std;
const int maxn=1010;
vector<int> adj[maxn];
bool vis[maxn]={false};
int n,m;
void DFS(int u){
vis[u]=true;
for(int i=0;i<adj[u].size();i++){
int temp=adj[u][i];
if(vis[temp]==false) DFS(temp);
}
}
int main(){
int a,b;
while(scanf("%d%d",&n,&m)!=EOF&&n!=0){
for(int i=1;i<=m;i++){
scanf("%d%d",&a,&b);
adj[a].push_back(b);
adj[b].push_back(a);
}
int ans=0;
for(int i=1;i<=n;i++){
if(vis[i]==false){
DFS(i);
ans++;
}
}
if(ans!=1) printf("NO\n");
else printf("YES\n");
}
return 0;
}