Pagini recente » Borderou de evaluare (job #3005338) | Cod sursa (job #647712) | Borderou de evaluare (job #2767971) | Rezultatele filtrării | Cod sursa (job #1414474)
#include <stdio.h>
using namespace std;
int n, m, v[100100];
FILE*f=fopen("disjoint.in","r"),*g=fopen("disjoint.out","w");
int tata(int z)
{
while(v[z] > 0)
z = v[z];
return z;
}
int main()
{
int q,x,y;
fscanf(f,"%d %d\n",&n,&m);
for(int i = 1; i <= n; i++)
v[i] = -1;
for(int i = 1; i <= m; i++)
{
fscanf(f,"%d %d %d",&q,&x,&y);
if(q == 1)
{
int t1 = tata(x);
int t2 = tata(y);
if( (-v[t1]) > (-v[t2])) {
v[t1] += v[t2];
v[t2] = t1;
}
else {
v[t2] += v[t1];
v[t1] = t2;
}
}
if(q == 2)
{
if(tata(x) == tata(y))
fprintf(g,"DA\n");
else
fprintf(g,"NU\n");
}
}
return 0;
}