Pagini recente » Cod sursa (job #2290793) | Cod sursa (job #420151) | Cod sursa (job #2954701) | Cod sursa (job #1223515) | Cod sursa (job #1082325)
// Include
#include <cstdio>
const int Nmax=(int)1e5+1;
using namespace std;
FILE *in, *out;
// Variabile
int n, m;
int tip,n1,n2;
int tata[Nmax];
int getRoot(int nod);
// Main
int main()
{
in=fopen("disjoint.in", "rt");
out=fopen("disjoint.out", "wt");
fscanf(in,"%d%d",&n,&m);
for(int i=1; i<=m; ++i)
{
fscanf(in,"%d%d%d", &tip, &n1, &n2);
if(tip==1)
{
int w=getRoot(n1);
int q=getRoot(n2);
if(w!=q)
tata[q]=w;
}
else
{
if(getRoot(n1)==getRoot(n2))
fprintf(out,"DA\n");
else
fprintf(out,"NU\n");
}
}
fclose(in);
fclose(out);
return 0;
}
int getRoot(int nod)
{
if(tata[nod])
{
tata[nod]=getRoot(tata[nod]);
return tata[nod];
}
return nod;
}