Cod sursa(job #2026492)
| Utilizator | Data | 24 septembrie 2017 14:57:35 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.67 kb |
#include <cstdio>
using namespace std;
int v[100005];
int father(int x)
{
if(v[x]==0)
return x;
return father(v[x]);
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
int n,m,a,b,a1,b1;
int ch;
scanf("%d%d",&n,&m);
for(int i=1; i<=m; ++i)
{
scanf("%d",&ch);
scanf("%d%d",&a,&b);
a1=father(a);
b1=father(b);
if(ch==2)
{
if(a1==b1)
printf("DA");
else
printf("NU");
printf("\n");
}
else
{
if(a1!=b1)
v[a1]=b1;
}
}
return 0;
}
