Pagini recente » Cod sursa (job #172291) | Cod sursa (job #1617993) | Cod sursa (job #1749384) | Cod sursa (job #1995780) | Cod sursa (job #1805945)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,m,sef[100001],h[100001];
int find(int x)
{
if(sef[x]==x) return x;
sef[x]=find(sef[x]);
return sef[x];
}
void uni(int x, int y)
{
int i,j;
i=find(x);
j=find(y);
if(h[i]>h[j])
sef[j]=i;
else
if(h[i]<h[j])
sef[i]=j;
else{
sef[i]=j;
h[j]++;
}
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++){
sef[i]=i;
h[i]=1;
}
int x,n1,n2;
for(int i=1;i<=m;i++){
f>>x>>n1>>n2;
if(x==1) uni(n1,n2);
if(x==2){
if(find(n1)==find(n2)) g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
return 0;
}