Skip to content

Instantly share code, notes, and snippets.

@kuoe0
Created February 16, 2012 08:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kuoe0/1843223 to your computer and use it in GitHub Desktop.
Save kuoe0/1843223 to your computer and use it in GitHub Desktop.
[POJ] 3723 - Conscription - http://kuoe0.ch/1515/poj-3723-conscription/
/*
* =====================================================================================
*
* Filename: 3723 - Conscription.cpp
*
* Description: http://poj.org/problem?id=3723
*
*
* Version: 1.0
* Created: 2012/02/16 14時59分31秒
* Revision: none
* Compiler: gcc
*
* Author: KuoE0 (tommy790506@hotmail.com)
* Organization: NCKU WMMKS Lab, Taiwan
*
* =====================================================================================
*/
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define MAXN 10010
vector< int > set, rank;
int find_set( int x ) {
if ( x != set[ x ] )
set[ x ] = find_set( set[ x ] );
return set[ x ];
}
void union_set( int a, int b ) {
if ( rank[ a ] > rank[ b ] )
set[ b ] = a;
else {
set[ a ] = b;
if ( rank[ a ] == rank[ b ] )
++rank[ b ];
}
}
int main() {
int t, N, M, R;
scanf( "%d", &t );
while ( t-- ) {
vector< pair< int, pair< int, int > > > rel;
scanf( "%d %d %d", &N, &M, &R );
set = rank = vector< int >( N + M, 0 );
for ( int i = 0; i < N + M; ++i )
set[ i ] = i;
int x, y, d;
for ( int i = 0; i < R; ++i ) {
scanf( "%d %d %d", &x, &y, &d );
rel.push_back( pair< int, pair< int, int > >( d, pair< int, int >( x, N + y ) ) );
}
long long int cnt = 0;
sort( rel.begin(), rel.end(), greater< pair< int, pair< int, int > > >() );
for ( int i = 0; i < rel.size(); ++i ) {
x = rel[ i ].second.first, y = rel[ i ].second.second;
if ( find_set( x ) != find_set( y ) ) {
cnt += rel[ i ].first;
union_set( find_set( x ), find_set( y ) );
}
}
printf( "%lld\n", 10000 * ( long long )( N + M ) - cnt );
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment