Pagini recente » Cod sursa (job #1278710) | Cod sursa (job #1593275) | Cod sursa (job #2847918) | Cod sursa (job #538926) | Cod sursa (job #2936252)
#include<fstream>
#include<iostream>
using namespace std;
int tata[100000]= {0},h[100000]= {0};
int find(int x) {
if (tata[x]!=0 ) {
tata[x]=find(tata[x]);
return tata[x];
}
return x;
}
void Union(int x,int y) {
int r1=find(x);
int r2=find(y);
if (h[r1]>h[r2]) {
tata[r2]=r1;
return;
}
if (h[r2]>h[r1]) {
tata[r1]=r2;
return;
}
tata[r2]=r1;
h[r1]+=1;
}
int main() {
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,m;
f>>n>>m;
for(int i =1; i<=m; i++) {
int x,y,op;
f>>op>>x>>y;
if(op==1) {
Union(x,y);
}
if(op==2) {
if(find(x)==find(y))
g<<"DA\n";
else
g<<"NU\n";
}
}
}