Pagini recente » Cod sursa (job #2113176) | Cod sursa (job #1870845) | Cod sursa (job #2496232) | Cod sursa (job #2951718) | Cod sursa (job #1645321)
#include <iostream>
#include <fstream>
#include <vector>
#define nmax 100005
using namespace std;
int n, m, card[nmax], parent[nmax], cop;
vector <int> G[nmax];
void set_value(){
for(int i=1; i<=n; i++){
parent[i] = i;
card[i] = 1;
}
}
void set_parent(int padre, int child){
G[padre].push_back(child);
parent[child] = padre;
card[padre] += card[child];
card[child] = 0;
for(int i=G[child].size()-1; i>=0; i--){
cop = G[child][i];
G[padre].push_back(cop);
parent[cop] = padre;
G[child].pop_back();
}
}
void solve(){
int p, x, y;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
f >> n >> m;
set_value();
for(int i=1; i<=m; i++){
f >> p >> x >> y;
if(p == 1){
if(card[x] >= card[y])
set_parent(parent[x], parent[y]);
else
set_parent(parent[y], parent[x]);
}
if(p == 2){
if(parent[x] == parent[y])
g << "DA\n";
else
g << "NU\n";
}
}
}
int main()
{
solve();
return 0;
}