Pagini recente » Cod sursa (job #3293447) | Cod sursa (job #1174624) | Cod sursa (job #2457314) | Cod sursa (job #234849) | Cod sursa (job #794718)
Cod sursa(job #794718)
#include <cstdio>
const int Nmax = 100010;
int N;
int sets[Nmax];
void unite(int a,int b)
{
int heada = a,headb=b;
int aux;
for( ; sets[heada] ; heada = sets[heada]);
while ( sets[headb] )
{
aux = sets[headb];
sets[headb] = heada;
headb = aux;
}
sets[headb] = heada;
}
int disjoint(int a,int b)
{
int heada,headb;
for(heada = a; sets[heada] ; heada = sets[heada]);
for(headb = b; sets[headb] ; headb = sets[headb]);
return (heada != headb);
}
int main()
{
int op,M,a,b;
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d",&N);
scanf("%d",&M);
for( ; M ; --M)
{
scanf("%d",&op);
scanf("%d",&a);
scanf("%d",&b);
switch(op)
{
case 1: unite(a,b); break;
case 2: printf("%s\n", ( (disjoint(a,b))?"NU":"DA") ); break;
}
}
return 0;
}