Pagini recente » Cod sursa (job #658246) | Cod sursa (job #2289848) | Cod sursa (job #209562) | Cod sursa (job #2730144) | Cod sursa (job #1036427)
#include<iostream>
#include<fstream>
#include<cstdio>
int t[1000], Rg[1000];
using namespace std;
int caut_radacina(int x)
{
int y, z, rad;
y=x;
while(t[y] != y)
y = t[y];
rad = y;
y = x;
while(t[y] != y)
{
z = y;
y = t[y];
t[z] = rad;
}
return rad;
}
void cod1(int x, int y)
{
int radx, rady;
radx = caut_radacina(x);
rady=caut_radacina(y);
if(Rg[radx] >= Rg[rady])
t[rady]=radx;
if(Rg[radx] == Rg[rady])
Rg[rady]++;
}
int main()
{
FILE *fin, *fout;
fin=fopen("disjoint.in","r");
fout=fopen("disjoint.out", "w");
int m, n, cod, x, y, i;
fscanf(fin, "%d %d", &n, &m);
for(i = 0; i < n; i++)
{
t[i] = i; Rg[i] = 1;
}
for(i = 0; i < m; i ++)
{
fscanf(fin, "%d %d %d", &cod, &x, &y);
if(cod == 2)
if(caut_radacina(x)==caut_radacina(y))
fprintf(fout, "DA\n");
else
fprintf(fout, "NU\n");
if(cod==1)
if(caut_radacina(x)!=caut_radacina(y))
cod1(x,y);
}
}