Pagini recente » Cod sursa (job #507415) | Cod sursa (job #2048772) | Cod sursa (job #1611276) | Cod sursa (job #321730) | Cod sursa (job #2807321)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#define NMAXIM 100001
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n, m;
int tati[NMAXIM], contor[NMAXIM];
int getRoot(int x){
if(x != tati[x]){
tati[x] = getRoot(tati[x]);
return tati[x];
}
return x;
}
int main()
{
fin>>n>>m;
for(int i = 1;i<=n;++i){
tati[i] = i;
contor[i] = 1;
}
for(int i = 1;i<=m;++i){
int task, x, y;
fin>>task>>x>>y;
int rootX = getRoot(x);
int rootY = getRoot(y);
if(task == 1){
if(rootX != rootY){
if(contor[rootX] <= contor[rootY]){
contor[rootY] += contor[rootX];
tati[rootX] = rootY;
}
else{
contor[rootX]+=contor[rootY];
tati[rootY] = rootX;
}
}
}
else{
if(rootX == rootY){
fout<<"DA \n";
}
else fout<<"NU \n";
}
}
return 0;
}