Pagini recente » Cod sursa (job #2051110) | Cod sursa (job #1213823) | Cod sursa (job #2031564) | Cod sursa (job #2281440) | Cod sursa (job #2424866)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int tata[200005],grad[200005];
int n, m, op;
int find_father(int node)
{
if(tata[node] != node)
tata[node] = find_father(tata[node]);
return tata[node];
}
int main()
{
int i, x, y;
fin >> n >> m;
for(i = 1; i <= n; i++)
{
tata[i] = i;
grad[i] = 1;
}
for(i = 0; i < m; i++)
{
fin >> op >> x >> y;
if(op == 2)
{
int fx = find_father(x);
int fy = find_father(y);
if(fx == fy)
fout << "DA\n";
else fout << "NU\n";
}
else
if(op == 1)
{
int fx = find_father(x);
int fy = find_father(y);
if(grad[fx] < grad[fy])
{
tata[fx] = fy;
grad[fy] += grad[fx];
}
else
{
grad[fx] += grad[fy];
tata[fy] = fx;
}
}
}
fin.close();
fout.close();
return 0;
}