Pagini recente » Cod sursa (job #2748336) | Cod sursa (job #2822954) | Cod sursa (job #912024) | Cod sursa (job #500987) | Cod sursa (job #1386697)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,m,v[100001],r[100001];
int caut(int x)
{
int z;
for(z=x;z!=v[z];z=v[z]);
int y;
while(x!=v[x])
{
y=v[x];
v[x]=z;
x=y;
}
return z;
}
void unesc (int x,int y)
{
if(r[x]<r[y])
v[x]=y;
else
v[y]=x;
if(r[x]==r[y])
r[x]++;
}
int main()
{f>>n>>m;
for(int i=1;i<=n;i++)
v[i]=i,r[i]=1;
for(int i=1;i<=m;i++)
{
int c,x,y;
f>>c>>x>>y;
if(c==1)
unesc(caut(x),caut(y));
else
if(caut(x)==caut(y))
g<<"DA\n";
else
g<<"NU\n";
}
return 0;
}