Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
我的也63ms^_^In Reply To:用了63ms,希望能抛砖引玉 Posted by:suikay at 2008-12-20 17:45:20 #include <stdio.h> #include <algorithm> struct edge { int d, u, v; }e[10010]; int n, m, r[2005]; int t, i, j, p, maxroad; int cmp( const void *a, const void *b ) { return *(int *)a-*(int *)b; } int Top( int x ) { int t = x; while ( r[x]!=x ) x = r[x]; return r[t] = x; } int Union( int x, int y ) { int t1, t2; t1 = Top( x ); t2 = Top( y ); if ( t1==t2 ) return 0; r[t1] = t2; return 1; } int main() { while ( scanf( "%d%d", &n, &m )!=EOF ) { for ( i=0; i<m; ++i ) scanf( "%d%d%d", &e[i].u, &e[i].v, &e[i].d ); qsort( e, m, sizeof( e[0] ), cmp ); for ( i=0; i<=n; ++i ) r[i] = i; i = 0; p = 0; while ( i<m && p<n-1 ) { if ( Union( e[i].u, e[i].v ) ) maxroad = e[i].d; ++i; } printf( "%d\n", maxroad ); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator