Cod sursa(job #1445613)
| Utilizator | Data | 30 mai 2015 15:52:53 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int *v;
int radacina(int x) {
if (x!=v[x]) return radacina(v[x]);
else return x;
}
int main() {
int n, x, y, z, i, m;
in >> n;
in >> m;
v=new int[m+1];
for (i=1; i<=m; i++)
v[i]=i;
for (i=1; i<=m; i++) {
in >> x >> y >> z;
if (x==1) v[radacina(z)]=radacina(y);
else if (x==2) {
if (radacina(z)==radacina(y)) out << "DA" << endl;
else out << "NU" << endl;
}
}
return 0;
}
