Pagini recente » Cod sursa (job #1422615) | Cod sursa (job #2327527) | Cod sursa (job #1949298) | Cod sursa (job #1485538) | Cod sursa (job #1977113)
#include <bits/stdc++.h>
#define Nmax 100001
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[Nmax];
int r[Nmax];
int find(int x)
{
int rez,y;
rez=x;
while(rez!=t[rez])
rez=t[rez];
while(x!=t[x])
{
y=t[x];
t[x]=rez;
x=y;
}
return rez;
}
int unite(int x, int y)
{
if(r[x]<r[y])
t[x]=y;
else t[y]=x;
if(r[x]==r[y])
r[y]++;
}
int main()
{int n,m,i,x,y,op;
f>>n>>m;
for(i=1;i<=n;i++)
{
r[i]=1;
t[i]=i;
}
for(i=1;i<=m;i++)
{
f>>op>>x>>y;
if(op==1)
unite(find(x),find(y));
else
{
if(find(x)==find(y)) g<<"DA\n";
else g<<"NU\n";
}
}
return 0;
}