Pagini recente » Cod sursa (job #2683997) | Cod sursa (job #2698225) | Cod sursa (job #1671393) | Istoria paginii runda/zxzx | Cod sursa (job #2408820)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
int tata[100001];
int grad[100001];
int n,m;
int find_father(int node)
{
if(tata[node] == node)
return node;
tata[node] = find_father(tata[node]);
return tata[node];
}
void Read()
{
int cod,x,y;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
f >> n >> m;
for(int i=1;i<=n;i++)
{
tata[i] = i;
grad[i] = 1;
}
for(int i=1;i<=m;i++)
{
f >> cod >> x >> y;
if(cod == 1)
{
if(find_father(x) != find_father(y))
{
if(grad[x] < grad[y])
{
tata[x] = y;
grad[y] += grad[x];
}
else
{
tata[y] = x;
grad[x] += grad[y];
}
}
}
else
{
if(find_father(x) == find_father(y))
g << "DA" << endl;
else
g << "NU" << endl;
}
}
}
int main()
{
Read();
return 0;
}