Pagini recente » Cod sursa (job #1733075) | Cod sursa (job #2201692) | Cod sursa (job #1705091) | Cod sursa (job #2355668) | Cod sursa (job #2154261)
#include <iostream>
#include <fstream>
#define nmax 100001
using namespace std;
ifstream fin("disjointset.in");
ofstream fout("disjointset.out");
int t[nmax],h[nmax],n,m,tip,x,y;
int findset(int node)
{
while(t[node]!=node)
node=t[node];
return node;
}
void Union(int x, int y)
{
if(h[y]==h[x])
{
h[x]++;
t[y]=x;
}
if(h[x]>h[y])
{
t[y]=x;
}
if(h[x]<h[y])
t[x]=y;
}
int main()
{
fin>>n>>m;
for(int i =1 ; i <= n ; i++)
{
t[i]=i;
h[i]=i;
}
for(int i =1; i <=m ; i++)
{
fin>>tip>>x>>y;
if(tip==1)
Union(findset(x),findset(y));
else
{
if(findset(x)==findset(y))
fout<<"DA"<<'\n';
else fout<<"NU"<<'\n';
}
}
return 0;
}