Pagini recente » Cod sursa (job #767269) | Cod sursa (job #929424) | Cod sursa (job #2888524) | Cod sursa (job #1919368) | Cod sursa (job #2543367)
#include <bits/stdc++.h>
#define Max 105000
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int link[Max],siz[Max],n,m;
int findd(int x)
{
while(x!=link[x])
x=link[x];
return x;
}
void unite(int a,int b)
{
a=findd(a);
b=findd(b);
if(siz[a]<siz[b]) swap(a,b);
siz[a]+=siz[b];
link[b]=a;
}
bool same(int a,int b)
{
return findd(a)==findd(b);
}
void kruskal()
{
f>>n>>m;
for(int i=1;i<=n;i++)
{
link[i]=i;
siz[i]=1;
}
for(int i=1;i<=m;i++)
{
int cod,a,b;
f>>cod>>a>>b;
if(cod==1 && !same(a,b))
unite(a,b);
if(cod==2)
if(same(a,b)) g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
int main()
{
kruskal();
return 0;
}