Pagini recente » Cod sursa (job #2441121) | Cod sursa (job #388124) | Cod sursa (job #3266848)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
vector <int> d[100001];
int n,m,x,y,cod,tata[100001],dim[100001];
int Find(int x)
{
if(tata[x]==x)
return x;
int t=Find(tata[x]);
tata[x]=t;
return t;
}
void Merge(int x, int y)
{
int rad1=Find(tata[x]),rad2=Find(tata[y]);
if(dim[rad1]>dim[rad2])
{
dim[rad1]++;
tata[rad2]=rad1;
}
else
{
dim[rad2]++;
tata[rad1]=rad2;
}
}
int main()
{
fin>>n>>m;
for(int i=1; i<=n; i++)
tata[i]=i;
for(int i=1; i<=m; i++)
{
fin>>cod>>x>>y;
if(cod==1)
Merge(x,y);
else
{
if(Find(x)==Find(y))
fout<<"DA"<<'\n';
else fout<<"NU"<<'\n';
}
}
return 0;
}