Pagini recente » Cod sursa (job #2810545) | Cod sursa (job #1199525) | Cod sursa (job #2062791) | Cod sursa (job #2561563) | Cod sursa (job #2807144)
#include <bits/stdc++.h>
using namespace std;
#define Nmax 100010
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
//memoram multimile ca arbori
int par[Nmax];
int dim[Nmax];
int n,m,cod,x,y;
//returneaza un ID pt componenta conexa a lui x
int findd(int x)
{
while(x != par[x])
{
x = par[x];
}
return x;
}
//trage o muchie intre nodurile x si y(uneste componentele conexe a lui x si y)
void unite(int x, int y)
{
x = findd(x);
y = findd(y);
if(dim[x] >= dim[y])
{
par[y] = x;
dim[x] += dim[y];
}
else
{
par[x] = y;
dim[y] += dim[x];
}
}
void init()
{
for(int i=1; i<=n; i++)
{
par[i] = i;
dim[i] = 1;
}
}
int main()
{
fin >> n >> m;
init();
for(int i =1; i<= m; i++)
{
fin >> cod >> x >> y;
if(cod == 1)
{
unite(x,y);
}
if(cod == 2)
{
if(findd(x) == findd(y))
fout << "DA" << '\n';
else
fout << "NU" << '\n';
}
}
return 0;
}