Pagini recente » Cod sursa (job #1644199) | Cod sursa (job #1344573) | Cod sursa (job #89073) | Cod sursa (job #2070330) | Cod sursa (job #2538867)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
vector<int> v[100005];
queue<int> q;
int n,m;
int rad[100005],l[100005];
void bobthebuilder(int a,int b)
{
int t=l[a]+l[b];
if(l[a]<l[b])
swap(a,b);
l[a]=l[b]=t;
q.push(b);
rad[b]=a;
while(!q.empty()){
int nod=q.front();
q.pop();
for(auto i:v[nod]){
if(rad[i]==b){
rad[i]=a;
q.push(i);
}
}
}
v[a].push_back(b);
v[b].push_back(a);
}
int main()
{
int cer,x,y;
in>>n>>m;
for(int i=1;i<=n;++i)
rad[i]=i;
for(int i=1;i<=m;++i){
in>>cer>>x>>y;
if(cer==1){
bobthebuilder(x,y);
}
else{
if(rad[x]==rad[y])
out<<"DA"<<'\n';
else
out<<"NU"<<'\n';
}
}
return 0;
}