Pagini recente » Cod sursa (job #2879527) | Cod sursa (job #2310772) | Cod sursa (job #1378558) | Cod sursa (job #76941) | Cod sursa (job #957797)
Cod sursa(job #957797)
#include <fstream>
#include <cstdio>
#include <vector>
#define fin "disjoint.in"
#define fout "disjoint.out"
using namespace std;
ifstream in(fin);
ofstream out(fout);
int N,M, cod, u, v;
int *parent, *height, *mul;
void makeSet( int parent[], int height[] ){
for( int i = 0 ; i < N; i++ ){
// mul[i] = i;
parent[i] = -1;
height[i] = 0;
}
}
int set( int u ){
if( parent[u] == -1 )
return u;
parent[u] = set( parent[u] );
return parent[u];
}
void join( int x, int y ){
int px = set(x);
int py = set(y);
if( height[px] > height[py] )
parent[py] = px;
else{
parent[px] = py;
if( height[x] == height[y] )
height[x] += 1;
}
}
int main(){
in >> N >> M;
parent = new int[N];
height = new int[N];
mul = new int[N];
makeSet( parent, height );
for( int i = 0 ; i < M; i++ ){
in >> cod >> u >> v;
if( cod == 1 )
join( u, v );
else{
if( set(u) == set(v) )
out << "DA";
else
out << "NU";
out << endl;
}
}
return 0;
}