Pagini recente » Cod sursa (job #1562636) | Cod sursa (job #783718) | Cod sursa (job #876201) | 1.mate-info.tk | Cod sursa (job #1268449)
#include <fstream>
using namespace std ;
const int NMAX = 100005 ;
const int INF = 0x3f3f3f3f ;
ifstream fin("disjoint.in") ;
ofstream fout("disjoint.out") ;
int N, M ;
int A[NMAX], rang[NMAX] ;
int FIND(int nod)
{
if(A[nod] != nod)
FIND(A[nod]) ;
else return A[nod] ;
}
static inline void U(int x, int y)
{
if(rang[x] > rang[y])
A[y] = x ;
else A[x] = y ;
if(rang[x] == rang[y]) rang[y] ++ ;
}
int main()
{
fin >> N >> M ;
for(int i = 1 ; i <= N ; ++ i )
{
A[i] = i ;
rang[i] = 1 ;
}
for(int i = 1 ; i <= M ; ++ i)
{
int tip, x, y;
fin >> tip >> x >> y ;
switch (tip)
{
case 1:
U(FIND(x), FIND(y)) ;
break ;
case 2:
if(FIND(x) == FIND(y))
fout << "DA" << '\n' ;
else fout << "NU" << '\n' ;
break ;
}
}
fin.close() ;
fout.close() ;
return 0 ;
}