Pagini recente » Cod sursa (job #3306350) | Cod sursa (job #599174) | Cod sursa (job #295435) | Cod sursa (job #532429) | Cod sursa (job #3311362)
#include <fstream>
#include <vector>
using namespace std;
//typedef unsigned long long ll;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
const int dim= 1e5+ 5;
vector <int> parent;
int sizes[dim];
int n, m;
int find(int x)
{
if(parent[x]== x)
return x;
return parent[x]= find(parent[x]);
}
void unite(int x, int y)
{
int p1= find(x);
int p2= find(y);
if(p1!= p2)
parent[p2]= p1;
sizes[p1]+= sizes[p2];
}
void citim()
{
int x, y, i, ce;
cin >> n>> m;
parent.resize(n+ 1);
for(i= 1;i <= n;i++)
parent[i]= i, sizes[i]= 1;
for(i= 1;i <= m;i++)
{
cin >> ce>> x>> y;
if(ce== 2)
{
if(find(x)== find(y))
cout << "DA"<< '\n';
else
cout << "NU"<< '\n';
}
else
{
if(sizes[x] > sizes[y])
unite(x, y);
else
unite(y, x);
}
}
}
int main()
{
int n, m;
citim();
return 0;
}