Pagini recente » Cod sursa (job #2534276) | Cod sursa (job #729691) | Cod sursa (job #196599) | Cod sursa (job #186557) | Cod sursa (job #2814790)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int nmax = 100005;
/*
int n, m, cod;
int vis[nmax];
vector < int > L[nmax];
void dfs(int k)
{
vis[k] = true;
for(auto it : L[k])
{
if(vis[it] == 0)
dfs(it);
}
}
int main()
{
int x, y;
fin >> n >> m;
for(int i = 1; i <= m; i ++)
{
fin >> cod >> x >> y;
if(cod == 1)
{
L[x].push_back(y);
L[y].push_back(x);
}
else
{
dfs(x);
if(vis[y] == 1)
fout << "DA" << '\n';
else fout << "NU" << '\n';
}
}
return 0;
}
*/
int n, m, cod;
int vis[nmax];
int parinte[nmax], dim[nmax];
vector < int > L[nmax];
int sef(int x)
{
while(parinte[x] != x)
x = parinte[x];
return x;
}
int main()
{
int x, y;
fin >> n >> m;
for(int i = 1; i <= n; i ++)
{
parinte[i] = i;
dim[i] = i;
}
for(int i = 1; i <= m; i ++)
{
fin >> cod >> x >> y;
if(cod == 1)
{
x = sef(x);
y = sef(y);
if(dim[x] > dim[y])
{
parinte[y] = x;
dim[x] += dim[y];
}
else
{
parinte[x] = y;
dim[y] += dim[x];
}
}
else
{
if(sef(x) == sef(y))
fout << "DA" << '\n';
else fout << "NU" << '\n';
}
}
return 0;
}