Pagini recente » Cod sursa (job #2651471) | Cod sursa (job #1205977) | Cod sursa (job #2856508) | Cod sursa (job #1246712) | Cod sursa (job #3350209)
#include <fstream>
#include <vector>
const int NMAX=100005;
using namespace std;
ifstream cin("disjoint.in");
ofstream cout("disjoint.out");
vector<int> multimi[NMAX];
int from[NMAX];
void combine(int pin2,int pin1)
{
if(multimi[pin2].size()>multimi[pin1].size()) swap(pin2,pin1);
for(auto i: multimi[pin2])
{
from[i]=pin1;
multimi[pin1].push_back(i);
}
multimi[pin2].clear();
multimi[pin2].shrink_to_fit();
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
multimi[i].push_back(i);
from[i]=i;
}
while(m--)
{
int tip,x,y;
cin>>tip>>x>>y;
if(tip==1)
{
combine(from[x],from[y]);
}
else
{
if(from[x]==from[y]) cout<<"DA"<<endl;
else cout<<"NU"<<endl;
}
}
return 0;
}