Cod sursa(job #2037904)
Utilizator | Data | 12 octombrie 2017 22:37:42 | |
---|---|---|---|
Problema | Paduri de multimi disjuncte | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.6 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int parinti[100001];
int root(int n){
while (parinti[n]!=0)
n = parinti[n];
return n;
}
void q1(int n1, int n2){
parinti[root(n2)] = root(n1);
}
void q2(int n1, int n2){
if (root(n1) == root(n2))
out << "DA\n";
else
out << "NU\n";
}
int main(){
int n, m, i, t, n1, n2;
in >> n >> m;
for (i=1; i<=m; i++){
in >> t >> n1 >> n2;
if (t == 1)
q1(n1, n2);
else
q2(n1, n2);
}
}