Cod sursa(job #2989260)
| Utilizator | Data | 6 martie 2023 11:58:19 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("date.in");
ofstream fout ("date.out");
int dad[100001], n , m;
void read() {
fin >> n;
for (int i=1;i<=n;i++) {
dad[i]=i;
}
}
int do_find(int n){
while (n!=dad[n]) {
n=dad[n];
}
return n;
}
void do_union(int n1, int n2) {
dad[n1]=dad[n2];
}
int main(){
read();
int x,y,z;
fin >> m;
for (int i=1;i<=m;i++){
fin >> x >> y >> z;
if (z==1) do_union(x,y);
else {
if (do_find(x)==do_find(y)) fout << "DA\n";
else fout << "NU\n";
}
}
}
