Pagini recente » Cod sursa (job #1115041) | Cod sursa (job #2460818) | Cod sursa (job #295428) | Cod sursa (job #3154659) | Cod sursa (job #1539114)
#include <stdio.h>
using namespace std;
const int MAX = 100000;
int parinte[MAX + 1];
int n;
void init()
{
for(int i = 1; i <= n; i++)
parinte[i] = i;
}
int find(int u)
{
int ans = u;
while(parinte[ans] != ans)
{
ans = parinte[ans];
}
while(parinte[u] != ans)
{
int tmp = parinte[u];
parinte[u] = ans;
u = tmp;
}
return ans;
}
void join(int u, int v)
{
u = find(u);
v = find(v);
parinte[u] = v;
}
bool querry(int u, int v)
{
return find(u) == find(v);
}
int main()
{
FILE *fin, *fout;
fin = fopen("disjoint.in", "r");
fout = fopen("disjoint.out", "w");
int m;
fscanf(fin, "%d %d", &n, &m);
init();
for(int i = 1; i <= m; i++)
{
int op, a, b;
fscanf(fin, "%d %d %d", &op, &a, &b);
if(op == 1)
join(a, b);
else
{
if(querry(a, b) == true)
fprintf(fout, "DA\n");
else
fprintf(fout, "NU\n");
}
}
return 0;
}