Pagini recente » Cod sursa (job #464831) | Cod sursa (job #1451240) | Rating Geman Aamalia (amalia.geman) | Cod sursa (job #1295455) | Cod sursa (job #3152142)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
vector <int> par;
vector <int> sz;
void initialize (int n)
{
par.resize(n+1);
sz.resize(n+1 , 1);
for (int i = 1; i <= n; i++)
{
par[i] = i;
}
}
int Find (int nod)
{
if (par[nod] == nod) return nod;
else return par[nod] = Find(par[nod]);
}
void unite (int x , int y)
{
int repX = Find(x) , repY = Find(y);
//if (s[repX] < s[repY]) swap(repX , repY);
if (repX != repY)
{
if(sz[repX] > sz[repY])
par[repY]=repX, sz[repX]+=sz[repY];
else
par[repX]=repY, sz[repY]+=sz[repX];
}
}
int main()
{
int n, m;
fin>>n>>m;
initialize(n);
int cod, a, b;
for(int i=1; i<=m; i++)
{
fin>>cod>>a>>b;
if(cod==1)
unite(a, b);
else
{
if(Find(a)==Find(b))
fout<<"DA"<<'\n';
else
fout<<"NU"<<'\n';
}
}
return 0;
}