Pagini recente » Cod sursa (job #2602591) | Cod sursa (job #2469800) | Cod sursa (job #3146711) | Cod sursa (job #534325) | Cod sursa (job #2631970)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int Dim=100001;
int N,M,T[Dim],h[Dim];
int Find(int x)//Regula de condensare
{
int r=x;
while(T[r]) r=T[r];
int y=x;
while(y!=r)
{
int t=T[y];
T[y]=r;
y=t;
}
return r;
}
void Union_ponderare(int x,int y)
{
int rx=Find(x),ry=Find(y);
if(h[rx]>h[ry]) T[ry]=rx;
else
{
T[rx]=ry;
if(h[rx]==h[ry]) h[ry]++;
}
}
int main()
{
f>>N>>M;
int x,y,z;
for(int i=1;i<=M;i++)
{
f>>x>>y>>z;
if(x==1) Union_ponderare(y,z);
else
{
int rx=Find(y),ry=Find(z);
if(rx==ry) g<<"DA";
else g<<"NU";
g<<'\n';
}
}
return 0;
}