Pagini recente » Cod sursa (job #1668172) | Cod sursa (job #3176313) | Cod sursa (job #433988) | Cod sursa (job #190990) | Cod sursa (job #3197541)
#include <fstream>
#include<vector>
#define NMAX 100007
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int tati[NMAX], siz[NMAX];
int n, m;
bool unite(int x, int y) {
while(tati[x] != x)
x = tati[x];
while(tati[y] != y)
y = tati[y];
if (x == y) {
return false;
}
if (siz[x] >= siz[y]) {
swap(x, y);
}
tati[x] = y;
siz[y] += siz[x];
return true;
}
int main(){
cin >> n >> m;
for(int i = 1; i <= n; i++)
siz[i] = 1, tati[i] = i;
while(m--){
int o, x, y;
cin >> o >> x >> y;
if(o == 1 && unite(x, y));
if(o == 2){
while(tati[x] != x)
x = tati[x];
while(tati[y] != y)
y = tati[y];
x == y ? cout << "DA\n" : cout << "NU\n";
}
}
return 0;
}