最小生成树卡hdu1875-畅通工程再续

首先声明,我是一个菜鸟。一下文章中出现技术误导情况盖不负责

    http://acm.hdu.edu.cn/showproblem.php?pid=1875

    这是我做过最恶心的最小生成树的标题 ,本来看有一段时间没做这个l类型的标题了,拿个标题练练手,结果。。。一全部晚上就卡这个活该的标题上面,我就想不通为什么sort会wa,但是qsort却AC了

    每日一道理
如果说友谊是一颗常青树,那么,浇灌它的必定是出自心田的清泉;如果说友谊是一朵开不败的鲜花,那么,照耀它的必定是从心中升起的太阳。 多少笑声都是友谊唤起的,多少眼泪都是友谊揩干的。友谊的港湾温情脉脉,友谊的清风灌满征帆。友谊不是感情的投资,它不需要股息和分红。(友谊可以换其他词语)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<stdlib.h>
using namespace std ;
const int maxn = 105 ;
struct node 
{
	int x , y ;
	double value ;
}edge[ maxn * ( maxn - 1 ) / 2 ] ;
int n ;
int fa[ maxn ] ;
int temp[ maxn ][ 2 ] ;
/*
int cmp( node a , node b )
{
	return a.value > b.value ;
}
*/
int cmp( const void *a ,const void * b )
{
	return ( (*(node*)a).value - (*(node*)b).value ) > 0 ? 1 : -1 ;
}
int find( int x )
{
	return fa[ x ] = x == fa[ x ] ? x : find( fa[ x ] ) ;
}
int main()
{
	int Case ;
	int i , j , k ;
	scanf( "%d" , &Case ) ;
	while( Case-- )
	{
		scanf( "%d" , &n ) ; 
		for( i = 1 ; i <= n ; i++ )
		{
				scanf( "%d %d" , &temp[ i ][ 0 ] , &temp[ i ][ 1 ] ) ;
				fa[ i ] = i ;
		}
		double temp1 ;
		k = 0 ;
		for( i = 1 ; i <= n ; i++ )
		{
			for( j = i + 1 ; j <= n ; j++ )
			{
				temp1 = sqrt( ( temp[ i ][ 0 ] - temp[ j ][ 0 ] ) * ( temp[ i ][ 0 ] - temp[ j ][ 0 ] ) + ( temp[ i ][ 1 ] - temp[ j ][ 1 ] ) * ( temp[ i ][ 1 ] - temp[ j ][ 1 ] ) ) ;
				if( temp1 < 10 || temp1 > 1000 )
					continue ;
				else
				{
					edge[ k ].x = i ;
					edge[ k ].y = j ;
					edge[ k ].value = temp1 ;
					k++ ;
				}
			}
		}
		//sort( edge , edge + k , cmp ) ;
		qsort( edge , k , sizeof( edge[ 0 ] ) , cmp ) ;
		int sum = 0; 
		double ans = 0.0 ;
		for( i = 0 ; i < k ; i++ )
		{
			int x1 = find( edge[ i ].x );
			int x2 = find( edge[ i ].y );
			if( x1 != x2 )
			{
				fa[ x1 ] = x2 ;
				sum++ ;
				ans += edge[ i ].value ;
			}
			if( sum == n - 1 )
				break ;
		}
		if( sum == n - 1)
		{
			printf( "%.1lf\n" ,ans * 100 ) ;
		}
		else
			printf( "oh!\n" ) ;
	}
	return 0 ;	
}

文章结束给大家分享下程序员的一些笑话语录: 不会,Intel会维持高利润,也会维持竞争局面,国外的竞争不是打死对方的那种。你看日本有尼康,佳能,索尼,都做相机,大家都过得很滋润。别看一堆厂,其实真正控制的是后面的那几个财团——有些竞争对手,后面其实是一家人。

posted @ 2013-05-17 22:22  xinyuyuanm  阅读(166)  评论(0编辑  收藏  举报