TR10

#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;
}

No comments:

Post a Comment

SRM ELAB SOLUTUONS   DATA-STRUCTURE                                                                             **IF THE PROGRAM DON...