Pagini recente » Cod sursa (job #1750547) | Cod sursa (job #802315) | Cod sursa (job #2970034) | Cod sursa (job #877252) | Cod sursa (job #1124315)
#include <fstream>
using namespace std;
fstream f("disjoint.in",ios::in);
fstream g("disjoint.out",ios::out);
const int nmax=100005;
int a[nmax],r[nmax],n,m,i,x,y,op;
int parc(int nr)
{
int k,nr1;
for (k=nr;a[k]!=k;k=a[k]);
while (nr!=a[nr])
{
nr1=a[nr];
a[nr]=k;
nr=nr1;
}
return k;
}
void uneste()
{
if (r[x]>r[y]) a[y]=x;
else a[x]=y;
if (r[x]==r[y]) r[y]++;
}
int main()
{
f>>n>>m;
for (i=1;i<=n;i++)
{
a[i]=i;
r[i]=1;
}
for (i=1;i<=m;i++)
{
f>>op>>x>>y;
if (op==1)
{
uneste();
}
else
{
if (parc(x)==parc(y)) g<<"DA\n";
else g<<"NU\n";
}
}
f.close();g.close();
return 0;
}