Pagini recente » Istoria paginii runda/dedicatie_speciala8/clasament | Cod sursa (job #2753206) | Cod sursa (job #1520869) | Istoria paginii runda/bkt/clasament | Cod sursa (job #1809829)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[100000],r[100000],i,n,m,p,x,y;;
int findd(int x)
{
int rad=x,tmp;
while(t[rad]!=0)
rad=t[rad];
while(t[x]!=0)
{
tmp=t[x];
t[x]=rad;
x=tmp;
}
return rad;
}
void uniune(int x,int y)
{
if(r[x]>r[y])
t[y]=x;
else
if(r[x]<r[y])
t[x]=y;
else
{
t[y]=x;
r[x]++;
}
}
int main()
{
f>>n>>m;
for(i=1; i<=m; i++)
{
f>>p>>x>>y;
if(p==1)
uniune(findd(x),findd(y));
else
if(findd(x)==findd(y))
g<<"DA"<<"\n";
else
g<<"NU"<<"\n";
}
return 0;
}