Pagini recente » Cod sursa (job #2550493) | Cod sursa (job #1714825) | Cod sursa (job #2212273) | Cod sursa (job #1595696) | Cod sursa (job #3277606)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int mult[100001];
int rang[100001];
int findmult(int a)
{
int cpy=a;
while(mult[a]!=a)
a=mult[a];
while(mult[cpy]!=cpy)
{
mult[cpy]=a;
cpy=mult[cpy];
}
return a;
}
void reuniune(int a,int b)
{
int A=findmult(a),B=findmult(b);
if(rang[A]>rang[B])
mult[B]=A;
else mult[A]=B;
if(rang[A]==rang[B])
rang[A]++;
}
int main()
{
int n,m,t,st,dr;
fin>>n>>m;
for(int i=1;i<=n;i++)
{
mult[i]=i;
rang[i]=1;
}
for(int i=1;i<=m;i++)
{
fin>>t>>st>>dr;
if(t==1)
{
if(findmult(st)!=findmult(dr))
reuniune(st,dr);
}
else
{
if(findmult(st)==findmult(dr))
fout<<"DA\n";
else fout<<"NU\n";
}
}
return 0;
}