Pagini recente » Cod sursa (job #2530480) | Cod sursa (job #322170) | Cod sursa (job #1274955) | Cod sursa (job #848507) | Cod sursa (job #2686419)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
const int MAXN=100005;
int parent[MAXN],depth[MAXN],n,m;
int findparent(int node)
{
if(parent[node]==node)
return node;
parent[node]=findparent(parent[node]);
return parent[node];
}
void reunit(int x, int y)
{
if (depth[x]>=depth[y])
{
parent[y]=parent[x];
depth[x]++;
}
else
{
parent[x]=parent[y];
depth[y]++;
}
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
parent[i]=i;
for(int i=0;i<m;i++)
{
int which_o,x,y;
fin>>which_o>>x>>y;
if(which_o==1)
{
x=findparent(x);
y=findparent(y);
reunit(x,y);
}
else {
if(findparent(x)==findparent(y))
fout<<"DA"<<"\n";
else
fout<<"NU"<<"\n";
}
}
return 0;
}