Cod sursa(job #2038966)
| Utilizator | Data | 14 octombrie 2017 10:23:38 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.61 kb |
#include<iostream>
#include<fstream>
#include<vector>
#include<set>
#define DN 100010
using namespace std;
fstream fin("disjoint.in",ios::in),fout("disjoint.out",ios::out);
int n,m,t[DN];
int tata(int nod)
{
if(t[nod]==nod) return nod;
t[nod]=tata(t[nod]);
}
int main()
{
int i,j,op,x,y,tx,ty;
fin>>n>>m;
for(i=1;i<=n;i++) t[i]=i;
for(i=1;i<=m;i++)
{
fin>>op>>x>>y;
tx=tata(x);
ty=tata(y);
if(op==2)
{
if(tx==ty)
fout<<"DA\n";
else
fout<<"NU\n";
}
else
t[tx]=ty;
}
}
