Pagini recente » Cod sursa (job #1097186) | Cod sursa (job #983987) | Cod sursa (job #636146) | Monitorul de evaluare | Cod sursa (job #1795897)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MaxN 100005
using namespace std;
FILE *IN,*OUT;
int N,M,Type,X,Y,v[MaxN];
void Union(int x,int y)
{
v[x]=y;
}
int Find(int x)
{
int y=x,prev;
while(y!=v[y])
y=v[y];
while(x!=v[x])
{
prev=v[x];
v[x]=y;
x=prev;
}
return y;
}
int main()
{
IN=fopen("disjoint.in","r");
OUT=fopen("disjoint.out","w");
fscanf(IN,"%d%d",&N,&M);
for(int i=1;i<=N;i++)
v[i]=i;
for(int i=1;i<=M;i++)
{
fscanf(IN,"%d%d%d",&Type,&X,&Y);
if(Type==1)
{
Union(Find(X),Find(Y));
}
else
{
if(Find(Y)==Find(X))fprintf(OUT,"DA\n");
else fprintf(OUT,"NU\n");
}
}
return 0;
}