Pagini recente » Cod sursa (job #513774) | Cod sursa (job #3004113) | Cod sursa (job #110364) | Cod sursa (job #2706288) | Cod sursa (job #3228159)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int Nmax=10001;//1 reuninune 2 daca sunt in aceeasi submultime
int n,m,sizei[Nmax],t[Nmax],x,y,p,a,b;
int findi(int x)
{
if(t[x]==x)
return x;
else
findi(t[x]);
}
int main()
{
f>>n>>m;
for(unsigned int i=1;i<=n;++i)
{t[i]=i;
sizei[i]=1;
}
for(unsigned int i=1;i<=m;++i)
{
f>>p>>x>>y;
a=findi(x);
b=findi(y);
if(p==2)
{
if(a==b)
g<<"Da";
else
g<<"Nu";
}
else
{
if(sizei[a]>sizei[b])
{
t[b]=a;
sizei[a]+=sizei[b];
}
else
{
t[a]=b;
sizei[b]+=sizei[a];
}
}
}
return 0;
}