Pagini recente » Cod sursa (job #1750550) | Cod sursa (job #1282343) | Cod sursa (job #1977971) | Cod sursa (job #2885132) | Cod sursa (job #1124464)
#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;
k=nr;
while (k!=a[k])
{
k=a[k];
}
while (nr!=a[nr])
{
nr1=a[nr];
a[nr]=k;
nr=nr1;
}
return k;
}
void uneste()
{
int x1,y11;
x1=parc(x); y11=parc(y);
if (r[x1]>r[y11]) a[y11]=x1;
else a[x1]=y11;
if (r[x1]==r[y11]) r[y11]++;
}
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;
}