Pagini recente » Cod sursa (job #1050874) | Cod sursa (job #2778979) | Cod sursa (job #2125192) | Cod sursa (job #1462775)
#include <iostream>
#include <fstream>
#define NMAX 100005
using namespace std;
int A[NMAX],R[NMAX],n,m,x,y,nr;
int fin(int x)
{
int r,aux;
for(r=x;A[r]!=r;r=A[r]);
for(;A[x]!=x;)
{
aux = A[x];
A[x] = r;
x=aux;
}
return r;
}
void uni(int r1, int r2)
{
if(R[r1]>R[r2])
A[r2] = r1;
else
A[r1] = r2;
if(R[r1]==R[r2])
R[r2]++;
}
int main()
{
ifstream in("disjoint.in");
ofstream out("disjoint.out");
in >> n >> m;
for(int i=1;i<=n;i++)
{
A[i]=i;
R[i]=1;
}
for(int i=0;i<m;i++)
{
in >> nr >> x >> y;
if(nr==2)
if(fin(x)==fin(y)) out << "DA" << "\n";
else out << "NU" << "\n";
else
uni(fin(x),fin(y));
}
return 0;
}