Pagini recente » Cod sursa (job #1614837) | Cod sursa (job #1525391) | Istoria paginii runda/moisil_9/clasament | Cod sursa (job #705519) | Cod sursa (job #2919535)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int t[100001],r[100001],n,m;
int radacina(int x)
{
int r,y;
r=x;
while(t[r]!=r)
{
r=t[r];
}
while(t[x]!=x)
{
//y=t[x];
t[x]=r;
x=t[x];
}
return r;
}
void unire(int x,int y)
{
if(r[x]>r[y])
{
t[y]=x;
}
else
{
t[x]=y;
}
if(r[x]==r[y])
{
r[y]++;
}
}
int main()
{int i,j,op,x,y;
f>>n>>m;
for(i=1;i<=n;i++)
{
t[i]=i;
r[i]=1;
}
for(i=1;i<=m;i++)
{
f>>op>>x>>y;
if(op==2)
{
if(radacina(x)==radacina(y))
{
g<<"DA"<<'\n';
}
else
{
g<<"NU"<<'\n';
}
}
else
{
unire(radacina(x),radacina(y));
}
}
return 0;
}