使用并查集
#include<iostream>
#include<stdio.h>using namespace std;
int set[1001];
int find(int x){
return x==set[x]?x:(set[x]=find(set[x]));
}
int main(){
int n,m;
int x,y;
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=1;i<=n;i++)
set[i]=i;
for(int i=1;i<=m;i++){
cin>>x>>y;
int fx=find(x);
int fy=find(y);
set[fx]=fy;
}
int count=0;
for(int i=1;i<=n;i++){
if(set[i]==i)
count++;
}
if(count==1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}