Pagini recente » Cod sursa (job #1382939) | Cod sursa (job #2693855) | Cod sursa (job #2439613) | Cod sursa (job #1571361) | Cod sursa (job #475639)
Cod sursa(job #475639)
// Paduri de multimi disjuncte.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include "stdio.h"
FILE *f=fopen("disjoint.in", "r");
FILE *g=fopen("disjoint.out", "w");
int n, m, tt[100001], rg[100001];
int find(int x)
{
int i;
for (i=x; tt[i]!=i; i=tt[i]);
while (tt[x]!=x)
{
int y=tt[x];
tt[x]=i;
x=y;
}
return i;
}
void unite(int x, int y)
{
if (rg[x]>rg[y])
tt[y]=x;
else
tt[x]=y;
if (rg[x]==rg[y])
rg[y]++;
}
int main()
{
fscanf(f, "%d%d", &n, &m);
for (int i=1; i<=n; ++i)
{
tt[i]=i;
rg[i]=1;
}
for (int j=1; j<=m; ++j)
{
int cod, x, y;
fscanf(f, "%d%d%d", &cod, &x, &y);
if (cod==2)
{
if (find(x)==find(y))
fprintf(g, "DA\n");
else fprintf(g, "NU\n");
}
else
{
unite(find(x), find(y));
}
}
return 0;
}