Cod sursa(job #2285841)
Utilizator | Data | 19 noiembrie 2018 13:21:24 | |
---|---|---|---|
Problema | Paduri de multimi disjuncte | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.7 kb |
#include <iostream>
#include <fstream>
#include <vector>
std::ifstream in("disjoint.in");
std::ofstream out("disjoint.out");
using namespace std;
int p[100005];
int n,m;
int a,b,c;
int father(int nod)
{
if(p[nod]==nod)
return nod;
return p[nod]=father(p[nod]);
}
int main()
{
in>>n>>m;
for(int i=0;i<n;i++)
{
p[i]=i;
}
for(int i=0;i<m;i++)
{
in>>a>>b>>c;
if(a==1)
{
p[father(c)]=father(b);
}
else if(a==2)
{
if(father(b)==father(c))
{
out<<"DA\n";
}
else out<<"NU\n";
}
}
return 0;
}