Pagini recente » Cod sursa (job #2688120) | Cod sursa (job #1866776) | Cod sursa (job #996188) | Cod sursa (job #2385472) | Cod sursa (job #2447987)
#include<bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int tt[100001], rg[100001], n, q, x, y, tip;
int find1(int x)
{
if(tt[x] == x)
return x;
return tt[x] = find1(tt[x]);
}
void unite(int x, int y)
{
if(rg[x]>rg[y])
tt[y]=x, rg[x]+=rg[y];
else
tt[x]=y, rg[y]+=rg[x];
}
int main()
{
f>>n>>q;
for(int i=1; i<=n; i++)
{
tt[i]=i;
rg[i]=1;
}
for(; q; q--)
{
f>>tip>>x>>y;
if(tip==1)
{
if(find1(x)!=find1(y))
unite(find1(x), find1(y));
}
else
{
if(find1(x)==find1(y))
g<<"DA";
else
g<<"NU";
g<<'\n';
}
}
return 0;
}