Pagini recente » Cod sursa (job #1509578) | Cod sursa (job #3158102) | Cod sursa (job #209805) | Cod sursa (job #2791622) | Cod sursa (job #1980850)
#include <bits/stdc++.h>
#define MAXN 100005
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n,m,GR[MAXN],ord[MAXN];
void makeSet(int x)
{
GR[x]=x;
ord[x]=0;
}
int findSet(int x)
{
if(x!=GR[x])
GR[x]=findSet(GR[x]);
return GR[x];
}
void unionSet(int x, int y)
{
int px=findSet(x),py=findSet(y);
if(ord[px]>ord[py])
GR[py]=px;
else
GR[px]=py;
if(ord[px]==ord[py])
ord[py]=ord[py]+1;
}
int main()
{
in>>n>>m;
for(int i=1;i<=n;++i)
makeSet(i);
for(int i=1;i<=m;++i)
{
int a,b,c;
in>>a>>b>>c;
if(a==1)
unionSet(b,c);
else
if(findSet(b)==findSet(c))
out<<"DA\n";
else
out<<"NU\n";
}
return 0;
}