Pagini recente » Cod sursa (job #2420821) | Cod sursa (job #1827990) | Cod sursa (job #537991) | Cod sursa (job #31755) | Cod sursa (job #2359358)
#include <bits/stdc++.h>
#define Nmax 100002
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int M,N,x,y,query,i;
int T[Nmax],Rank[Nmax];
int Root(int k)
{
if(T[k]==0)return k;
int r=Root(T[k]);
T[k]=r;
return r;
}
void Union(int x,int y)
{
int rx=Root(x),ry=Root(y);
if(Rank[rx]>Rank[ry])T[ry]=rx;
else
{
T[rx]=ry;
if(Rank[rx]==Rank[ry])Rank[ry]++;
}
}
void Check(int x,int y)
{
int rx=Root(x),ry=Root(y);
if(rx==ry)g<<"DA\n";
else g<<"NU\n";
}
int main()
{
f>>N>>M;
for(i=1;i<=M;i++)
{
f>>query>>x>>y;
if(query==1)Union(x,y);
if(query==2)Check(x,y);
}
return 0;
}