Pagini recente » Cod sursa (job #1787643) | Cod sursa (job #1714708) | Cod sursa (job #328836) | Cod sursa (job #137032) | Cod sursa (job #2162034)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
vector<int> vec;
vector<int> rang;
void make_union(int x,int y)
{
//vec[vec[x]] = y;
if(rang[x] > rang[y])
{
vec[y] = x;
}
else
{
vec[x] = y;
}
if(rang[x] == rang[x]) rang[y]++;
}
int cross(int x)
{
if(vec[x] == x) return x;
vec[x] = cross(vec[x]);
return vec[x];
}
int n,m;
int main()
{
fin>>n>>m;
for(int i=0;i<n;i++)
{
vec.push_back(i);
rang.push_back(1);
}
for(int i=0;i<m;i++)
{
int k1,k2,k3;
fin>>k1>>k2>>k3;
if(k1 == 1)
{
make_union(k2-1,k3-1);
}
else
{
if(cross(k2-1) == cross(k3-1)) fout<<"DA\n";
else fout<<"NU\n";
}
}
}