Pagini recente » Cod sursa (job #253590) | Cod sursa (job #2809759) | Cod sursa (job #1067679) | Cod sursa (job #2345870) | Cod sursa (job #1978093)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int NMAX = 100000;
int n, m, mark[1 + NMAX], p, b, c;
vector < int > mult[1 + NMAX];
void reunion(int a, int b){
if(mult[b].size() < mult[a].size()){
for(int i = 0; i < mult[b].size(); i++){
mult[a].push_back(mult[b][i]);
mark[mult[b][i]] = a;
}
mult[b].clear();
}else{
for(int i = 0; i < mult[a].size(); i++){
mult[b].push_back(mult[a][i]);
mark[mult[a][i]] = b;
}
mult[a].clear();
}
}
int main()
{
in >> n >> m;
for(int i = 1; i <= n; i++){
mark[i] = i;
mult[i].push_back(i);
}
for(int i = 1; i <= m; i++){
in >> p >> b >> c;
if(p == 1)
reunion(mark[b], mark[c]);
else{
if(mark[b] == mark[c])
out << "DA\n";
else
out << "NU\n";
}
}
in.close();
out.close();
return 0;
}