Pagini recente » Cod sursa (job #17648) | Cod sursa (job #2004212) | Cod sursa (job #1625984) | Cod sursa (job #3283968) | Cod sursa (job #1650480)
#include <fstream>
using namespace std;
ifstream fi("disjoint.in");
ofstream fo("disjoint.out");
int n, m, NRV[100001], P[100001];
int stramos( int x ){
int start;
start = x;
while( P[x] != x )
x = P[x];
while( P[start] != x ){
P[start] = x;
start = P[start];
}
return x;
}
void op1( int x, int y ){
int nx, ny;
nx = stramos(x);
ny = stramos(y);
if( nx <= ny ){
NRV[ny] += NRV[nx];
P[nx] = P[ny];
}
else{
NRV[nx] += NRV[ny];
P[ny] = P[nx];
}
}
void op2( int x, int y){
if( stramos(x) == stramos(y) )
fo << "DA\n";
else
fo << "NU\n";
}
int main(){
int i, t, x, y;
fi >> n >> m;
for( i = 1; i <= n; i++ ){
P[i] = i;
NRV[i] = 1;
}
for( i = 1; i <= m; i++ ){
fi >> t >> x >> y;
if( t == 1 )
op1(x,y);
else
op2(x,y);
}
return 0;
}