Cod sursa(job #1193404)
| Utilizator | Data | 31 mai 2014 17:57:20 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.59 kb |
#include <cstdio>
using namespace std;
#define NMAX 100001
int i,N,Q,type,X,Y;
int T[NMAX];
int multime(int nod)
{
int rang;
(T[nod]==nod) ? rang=nod : rang=multime(T[nod]);
T[nod]=rang;
return T[nod];
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&N,&Q);
for (i=1;i<=N;++i)
T[i]=i;
while (Q--)
{
scanf("%d%d%d",&type,&X,&Y);
if (type==1)
{
T[multime(Y)]=T[X];
continue;
}
(multime(X)==multime(Y)) ? printf("DA\n") : printf("NU\n");
}
return 0;
}
