Pagini recente » Autentificare | Cod sursa (job #1640237) | Cod sursa (job #998437) | Cod sursa (job #425439) | Cod sursa (job #2741730)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int DIM=1e5+5;
int n,m,x,y,cer;
int tt[DIM],siz[DIM];
int find(int a)
{
if (tt[a]==a)
return a;
return (tt[a]=find(tt[a]));
}
void unite(int a,int b)
{
a=find(a);
b=find(b);
if (siz[a]<siz[b])
swap(a,b);
tt[b]=a;
siz[a]+=siz[b];
}
int main()
{
f >> n >> m;
for (int i=1; i<=n; i++)
{
tt[i]=i;
siz[i]=1;
}
for (int i = 1; i <= m; i++)
{
f >> cer >> x >> y;
if (cer==1)
unite(x,y);
else
{
if (find(x)==find(y))
g<<"DA"<<'\n';
else
g<<"NU"<<'\n';
}
}
return 0;
}