Pagini recente » Istoria paginii runda/mereuafectatemotional | Istoria paginii preoni-2007/runda-4/solutii | Cod sursa (job #1953384) | Cod sursa (job #2754062) | Cod sursa (job #2981652)
#include <iostream>
#include <fstream>
#include <map>
#include <vector>
using namespace std;
#define N 100001
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n, qr, cc[N];
map<int, vector<int>> m;
void uneste(int x, int y){
int mini = min(x, y);
int maxi = max(x, y);
for(int k : m[cc[maxi]]){
m[cc[mini]].push_back(k);
cc[k] = cc[mini];
}
}
int main(){
in >> n >> qr;
for(int i=1; i<=n; i++){
cc[i] = i;
m[i].push_back(i);
}
while(qr--){
int q, x, y;
in >> q >> x >> y;
if(q == 1)
uneste(x, y);
else
out << (cc[x] == cc[y] ? "DA\n" : "NU\n");
}
}