Pagini recente » Cod sursa (job #373340) | Cod sursa (job #307002) | Cod sursa (job #1574741) | Cod sursa (job #2078250) | Cod sursa (job #3197568)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m, tata[100001], lg[100001], op, x, y;
void unesc(int radx, int rady){
if(lg[radx] < lg[rady])
tata[radx] = rady;
else if(lg[radx] > lg[rady])
tata[rady] = radx;
else
tata[rady] = radx, lg[radx]++;
}
void sunt(int radx, int rady){
if(radx == rady)
fout << "DA";
else
fout << "NU";
fout << '\n';
}
int rad(int x){
while(x != tata[x])
x = tata[x];
return x;
}
int main(){
fin >> n >> m;
for(int i = 1; i <= n; i++)
tata[i] = i, lg[i] = 1;
for(int i = 1; i <= m; i++){
fin >> op >> x >> y;
int radx = rad(x);
int rady = rad(y);
if(op == 1){
///unesc x si y
unesc(radx, rady);
}
else
sunt(radx, rady);
}
}