Mai intai trebuie sa te autentifici.
Cod sursa(job #3163012)
| Utilizator | Data | 30 octombrie 2023 12:30:41 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.69 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int t[100005];
/**
t[i]= 0, daca i este rad
=j,daca j este predecesorul lui i in drumul de la i la rad
*/
int n, m, op, x, y;
int FindRoot(int x){
int rad=x;
while(t[rad]!=0)
rad=t[rad];
return rad;
}
void Union(int x, int y){
t[y]=x;
}
int main(){
fin>>n>>m;
for(int i=1;i<=m;i++){
fin>>op>>x>>y;
x=FindRoot(x);
y=FindRoot(y);
if(op==1)
Union(x, y);
else
if(x==y)
fout<<"DA\n";
else fout<<"NU\n";
}
return 0;
}
