Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/galansebi1999 | Istoria paginii utilizator/catalin.butacu | Atasamentele paginii Clasament preoji-10 | Cod sursa (job #2354792)
#include <cstdio>
using namespace std;
FILE *fin=fopen("disjoint.in","r"),*fout=fopen("disjoint.out","w");
int sef[100005];
int sefsuprem(int x)
{
if(sef[x]==x)
return x;
else
return sef[x]=sefsuprem(sef[x]);
}
void unire(int x, int y)
{
int sefsx=sefsuprem(x);
int sefsy=sefsuprem(y);
sef[sefsx]=sefsy;
}
int main()
{
int n,m,i,x,y,p;
///freopen("disjoint.in","r",stdin);
///freopen("disjoint.out","w",stdout);
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++)
sef[i]=i;
for(i=1;i<=m;i++)
{
fscanf(fin,"%d%d%d",&p,&x,&y);
if(p==1)
unire(x,y);
else
if(sefsuprem(x)==sefsuprem(y))
fprintf(fout,"DA\n");
else
fprintf(fout,"NU\n");
}
return 0;
}