Pagini recente » Cod sursa (job #1154864) | Cod sursa (job #1107941) | Cod sursa (job #735192) | Cod sursa (job #215872) | Cod sursa (job #1244570)
#include<fstream>
using namespace std;
ifstream fin( "disjoint.in" );
ofstream fout( "disjoint.out" );
const int nmax = 100000;
int tata[ nmax + 1 ], grad[ nmax + 1 ];
int find_tata( int x ) {
if ( tata[ x ] == x ) {
return x;
} else {
return ( tata[ x ] = find_tata( tata[ x ] ) );
}
}
int main() {
int n, m, a, b, t, ta, tb;
fin >> n >> m;
for( int i = 1; i <= n; ++ i ) {
tata[ i ] = i;
grad[ i ] = 1;
}
for( ; m > 0; -- m ) {
fin >> t >> a >> b;
ta = find_tata( a );
tb = find_tata( b );
if ( t == 1 ) {
if ( grad[ ta ] < grad[ tb ] ) {
grad[ tb ] += grad[ ta ];
tata[ ta ] = tb;
} else {
grad[ ta ] += grad[ tb ];
tata[ tb ] = ta;
}
} else {
if ( ta == tb ) {
fout << "DA\n";
} else {
fout << "NU\n";
}
}
}
fin.close();
fout.close();
return 0;
}