Pagini recente » Cod sursa (job #961278) | Cod sursa (job #465742) | Cod sursa (job #3251030) | Cod sursa (job #1392927) | Cod sursa (job #2328670)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int tata[100100],h[100100];
int findd(int x)
{
int r=x;
while(tata[r])r=tata[r];
int y=x,t1;
while(y!=r)
{
t1=tata[y];
tata[y]=r;
y=t1;
}
return r;
}
void unionn(int x,int y)
{
int c;
x=findd(x);
y=findd(y);
if(h[x]<h[y]){tata[x]=y;c=y;}
else {tata[y]=x;c=x;}
if(h[x]==h[y]){h[c]++;}
}
int n,m,x,a,b,i;
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)h[i]=1;
for(i=1;i<=m;i++)
{
f>>x>>a>>b;
if(x==1){unionn(a,b);}
else
{
if(findd(a)==findd(b))g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
return 0;
}