Pagini recente » Cod sursa (job #1036423) | Cod sursa (job #840773) | Cod sursa (job #2505249) | Cod sursa (job #3252773) | Cod sursa (job #2343961)
#include<bits/stdc++.h>
#define NMAX 100005
#define MMAX 100005
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m;
int link[NMAX],height[NMAX];
int find(int x)
{
while(x!=link[x]) x=link[x];
return x;
}
bool same(int a,int b)
{
return find(a)==find(b);
}
void unite(int a,int b)
{
a=find(a);
b=find(b);
if(height[a]>height[b]) swap(a,b);
link[a]=b;
height[b]=max(height[b],height[a]+1);
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++) link[i]=i;
for(int i=1;i<=n;i++) height[i]=1;
for(int i=0;i<m;i++)
{
int t,a,b;
fin>>t>>a>>b;
if(t==1) unite(a,b);
if(t==2) fout<<(same(a,b)?"DA\n":"NU\n");
}
return 0;
}