Pagini recente » Cod sursa (job #551487) | Cod sursa (job #2463840) | Istoria paginii runda/srgtdrghsr | Monitorul de evaluare | Cod sursa (job #2981653)
#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 maxi, mini;
if(m[x].size() > m[y].size()){
maxi = y;
mini = x;
}
else{
maxi = x;
mini = 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");
}
}