Pagini recente » Cod sursa (job #126260) | Cod sursa (job #1488037) | Cod sursa (job #2300630) | Cod sursa (job #2424636) | Cod sursa (job #3030174)
#include <fstream>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int M[100001],T[100001];
int n,m;
void Reuniune(int x, int y)
{
if(M[x]<M[y])
T[x]=y;
else if(M[y]<M[x])
T[y]=x;
else
{
T[x]=y;
M[y]++;
}
}
int Root(int start)
{
while(T[start]!=start)
start=T[start];
return start;
}
void Interogare(int x, int y)
{
if(Root(x)==Root(y))
cout<<"DA";
else cout<<"NU";
cout<<'\n';
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
T[i]=i;
for(int i=1;i<=m;i++)
{
int x,y,cod;
cin>>cod>>x>>y;
int rx=Root(x);
int ry=Root(y);
if(cod==1)
Reuniune(rx,ry);
else
Interogare(rx,ry);
}
}