Pagini recente » Cod sursa (job #1630704) | Cod sursa (job #3305513) | Cod sursa (job #1630773) | Cod sursa (job #3329509) | Cod sursa (job #3310950)
#include <fstream>
#include <unordered_map>
using namespace std;
ifstream cin ("disjoint.in");
ofstream cout ("disjoint.out");
struct QUERY{
int u, v, cer;
}query[100001];
struct DSU{
unordered_map <int, int> adj;
void init(int q){
for (int i=0; i<q; i++){
adj[query[i].u]=query[i].u;
adj[query[i].v]=query[i].v;
}
}
int fid(int i){
if (adj[i]==i)
return i;
return adj[i]=fid(adj[i]);
}
void unit(int i, int j){
i=fid(i);
j=fid(j);
if (adj[i]==adj[j])
return;
adj[j]=i;
}
};
int main()
{
int n,q,i;
cin >> n >> q;
for (i=0; i<q; i++)
cin >> query[i].cer >> query[i].u >> query[i].v;
DSU dsu;
dsu.init(q);
for (i=0; i<q; i++){
if (query[i].cer==1)
dsu.unit(query[i].u, query[i].v);
else{
if (dsu.fid(query[i].u)==dsu.fid(query[i].v))
cout << "DA" << '\n';
else
cout << "NU" << '\n';
}
}
return 0;
}