Pagini recente » Cod sursa (job #154332) | Cod sursa (job #1735663) | Cod sursa (job #2117811) | Cod sursa (job #1070674) | Cod sursa (job #2566973)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int N,M;
int T[100005],R[100005];
int parinte(int x)
{
if(!T[x])
return x;
int P=parinte(T[x]);
T[x]=P;
return P;
}
void adaugare(int x, int y)
{
int pX=parinte(x),pY=parinte(y);
if(pX!=pY)
{
if(R[pX]>R[pY])
T[pY]=pX;
else
{
T[pX]=pY;
if(R[pX]==R[pY])
R[pY]++;
}
}
}
void verificare(int x,int y)
{
if(parinte(x)==parinte(y))
fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
}
int main()
{
int x,y,z;
fin>>N>>M;
for(int i=1;i<=M;i++)
{
fin>>x>>y>>z;
if(x==1)
adaugare(y,z);
else
verificare(y,z);
}
return 0;
}