Pagini recente » Cod sursa (job #192209) | Cod sursa (job #3180380) | Cod sursa (job #2490523) | Cod sursa (job #2715113) | Cod sursa (job #3296958)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
int grup[100001];
int whoIsDaddy(int startnode)
{
int current = startnode;
vector<int>passedby;
while(grup[current] != current)
{
passedby.push_back(current);
current = grup[current];
}
for(auto node:passedby)
{
grup[node] = current;
}
return current;
}
void makeHimMyDaddy(int newDaddy,int DaddysNewToy){
int root = whoIsDaddy(DaddysNewToy);
grup[root] = newDaddy;
}
int main()
{
int n,q,i,j;
cin>>n>>q;
for(i=1;i<=n;i++)
{
grup[i]=i;
}
for(j=1;j<=q;j++)
{
int a,b,c;
cin>>c>>a>>b;
if(c==1)
{
makeHimMyDaddy(a,b);
}
else
{
if(whoIsDaddy(a) == whoIsDaddy(b))
{cout<<"DA"<<'\n';
continue;
}
cout<<"NU"<<'\n';
}
}
return 0;
}