Pagini recente » Cod sursa (job #1658841) | Cod sursa (job #1920761) | Cod sursa (job #595053) | Cod sursa (job #1061832) | Cod sursa (job #2672676)
/**
infoarena.ro/problema/disjoint
Paduri de multimi disjuncte
*/
#include <fstream>
#define nmax 100005
using namespace std;
int vt[nmax];
int n,m;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int radacina(int x)
{
if(vt[x]!=x)
vt[x]=radacina(vt[x]);
return vt[x];
}
void unire(int x, int y)
{
if(x!=y)
if(x<y)
vt[y]=x;
else
vt[x]=y;
}
int main()
{
int x,y,t;
fin>>n>>m;
for(int i=1;i<=n;i++)
vt[i]=i;
for(int i=1;i<=m;i++)
{
fin>>t>>x>>y;
int a=radacina(x);
int b=radacina(y);
if(t==1)
unire(a, b);
else
if(a == b)
fout << "DA" << '\n';
else
fout << "NU" << '\n';
}
}