#include <bits/stdc++.h>
using namespace std;
#define MINIMUM(a,b) (((a)<(b))?(a):(b))
const int maxN = 1e2; int n, m;
int parent[maxN];
int root(int u)
{
if (parent[u]<0)
return(u);
return(parent[u]=root(parent[u]));
}
int setSize(int u)
{
return(-1*parent[root(u)]);
}
void merge(int u,int v)
{
u=root(u),v=root(v);
if(u==v)
return;
if(parent[v]<parent[u])
{
swap(parent[u],parent[v]);
}
parent[u]+=parent[v];
parent[v]=u;
}
int main()
{
memset(parent,-1,sizeof(parent));
cin>>n>>m;
int lol=0;
for (int i=0,u,v;i<m;i++)
{
cin>>u>>v;
u --,v --;
if(root(u)==root(v))
lol ++;
merge(u,v);
}
if(lol==1)
cout<<"YES";
else
cout<<"NO";
return 0;
}
using namespace std;
#define MINIMUM(a,b) (((a)<(b))?(a):(b))
const int maxN = 1e2; int n, m;
int parent[maxN];
int root(int u)
{
if (parent[u]<0)
return(u);
return(parent[u]=root(parent[u]));
}
int setSize(int u)
{
return(-1*parent[root(u)]);
}
void merge(int u,int v)
{
u=root(u),v=root(v);
if(u==v)
return;
if(parent[v]<parent[u])
{
swap(parent[u],parent[v]);
}
parent[u]+=parent[v];
parent[v]=u;
}
int main()
{
memset(parent,-1,sizeof(parent));
cin>>n>>m;
int lol=0;
for (int i=0,u,v;i<m;i++)
{
cin>>u>>v;
u --,v --;
if(root(u)==root(v))
lol ++;
merge(u,v);
}
if(lol==1)
cout<<"YES";
else
cout<<"NO";
return 0;
}
No comments:
Post a Comment