Pagini recente » Cod sursa (job #119471) | Cod sursa (job #1231154) | Cod sursa (job #1016682) | Cod sursa (job #306452) | Cod sursa (job #1436913)
#include <iostream>
#include<fstream>
using namespace std;
int v[100001],rang[100001],n,m;
void uneste(int x,int y)
{
if(v[x]>v[y])
v[y]=x;
else
v[x]=y;
if(rang[x]==rang[y])
rang[y]++;
}
int cauta(int x)
{
int c,y;
for(c=x; v[c]!=c; c=v[c]);
for(; v[x]!=x;)
{
y=v[x];
v[x]=c;
x=y;
}
return c;
}
int main()
{
int i,x,y,cod;
ifstream f("disjoint.in");
f>>n>>m;
for(i=1;i<=n;i++)
{
v[i]=i;
rang[i]=1;
}
ofstream g("disjoint.out");
for(i=1;i<=m;i++)
{
f>>cod>>x>>y;
if(cod==1)
uneste(x,y);
else
if(cauta(x)==cauta(y))
g<<"DA"<<"\n";
else
g<<"NU"<<"\n";
}
f.close();
g.close();
return 0;
}