Pagini recente » Cod sursa (job #2207157) | Cod sursa (job #2510583) | Cod sursa (job #1449215) | Cod sursa (job #2830029) | Cod sursa (job #2807230)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define Nmax 10010
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int par[Nmax];
int dim[Nmax];
int find_radacina(int x)
{
while(x!=par[x]) //parcurgem cat timp x are parinte
x=par[x];
return x;
}
void unite(int a, int b)
{
int x = find_radacina(a);
int y = find_radacina(b);
if(dim[x] > dim[y])
{
par[y] = x;
dim[x]+=dim[y];
}
else
{
par[x] = y;
dim[y] += dim[x];
}
}
/*
void init()
{
int n;
for(int i=1; i<=n; ++i)
{
par[i]=i;
dim[i]=1;
}
} */
int main()
{
int n, m;
fin>> n >> m;
for(int i=1; i<=n; i++)
{
par[i] = i;
}
while (m--)
{
int cod, a, b;
fin>> cod >> a >> b;
if(cod == 1)
{
unite(a,b);
}
else
{
if(find_radacina(a) == find_radacina(b))
fout << "DA\n";
else
fout << "NU\n";
}
}
return 0;
}