Pagini recente » Cod sursa (job #2735730) | Cod sursa (job #2287108) | Cod sursa (job #1600092) | Cod sursa (job #1237092) | Cod sursa (job #1038639)
#include <fstream>
using namespace std;
int n,m,i,a,b,c,v[100002],h[100002];
void pas1 (int x,int y)
{
if (h[x]>h[y])
{
v[y]=v[x];
}
else
{
v[x]=v[y];
}
if (h[x]==h[y]) h[y]++;
}
int pas2 (int x)
{
int r,y,t;
r=x;
while (v[r]) r=v[r];
y=x;
while (y!=r)
{
t=v[y];
v[y]=r;
y=t;
}
return r;
}
int main()
{
ifstream f("disjoint.in");
ofstream g("disjoint.out");
f>>n>>m;
for (i=1;i<=n;i++)
{
v[i]=0;
h[i]=1;
}
for (i=0;i<m;i++)
{
f>>a>>b>>c;
if (a==1)
{
if (pas2(b)!=pas2(c)) pas1(pas2(b),pas2(c));
}
if (a==2)
{
if (pas2(b)==pas2(c))
{
g<<"DA";
g<<"\n";
}
else
{
g<<"NU";
g<<"\n";
}
}
}
f.close();
g.close();
return 0;
}