zoukankan      html  css  js  c++  java
  • POJ2349+Prim

    Prim!

    /*
    prim
    题意:给定一些点,一些卫星,一个卫星能连接两个点,点和点之间通信有一定的距离限制。
    问能使得所有的点联通的最小距离。
    */
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<algorithm>
    #include<iostream>
    #include<queue>
    #include<map>
    #include<stack>
    #include<set>
    #include<math.h>
    using namespace std;
    typedef long long int64;
    //typedef __int64 int64;
    typedef pair<int64,int64> PII;
    #define MP(a,b) make_pair((a),(b)) 
    const int maxn = 505;
    const int inf = 0x7fffffff;
    const double pi=acos(-1.0);
    const double eps = 1e-8;
    
    struct Node{
    	double x,y;
    }a[ maxn ];
    int vis[ maxn ];
    double dis[ maxn ];
    double mat[ maxn ][ maxn ];
    
    double dist( Node a,Node b ){
    	return sqrt( (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y) );
    }
    
    void init( int n ){
    	for( int i=1;i<=n;i++ ){
    		for( int j=1;j<=n;j++ ){
    			mat[i][j] = dist( a[i],a[j] );
    		}
    	}
    	return ;
    } 
    
    void prim( int n ){
    	for( int i=1;i<=n;i++ ){
    		vis[ i ] = 0;
    		dis[ i ] = mat[1][i];
    	}
    	vis[ 1 ] = 1;
    	for( int i=1;i<=n;i++ ){
    		int M = inf;
    		int id = -1;
    		for( int j=1;j<=n;j++ ){
    			if( vis[ j ]==0&&M>dis[j] ){
    				M = dis[ j ];
    				id = j;
    			}
    		}
    		if( id==-1 ) return ;
    		vis[ id ] = 1;
    		for( int j=1;j<=n;j++ ){
    			if( vis[j]==0&&dis[j]>mat[ id ][ j ] ){
    				dis[ j ] = mat[ id ][ j ];
    			}
    		}
    	}
    	return ;
    }
    
    int main(){
    	int T;
    	scanf("%d",&T);
    	while( T-- ){
    		int s,n;
    		scanf("%d%d",&s,&n);
    		for( int i=1;i<=n;i++ )
    			scanf("%lf%lf",&a[i].x,&a[i].y);
    		init( n );
    		prim( n );
    		sort( dis+1,dis+1+n );
    		//for( int i=1;i<=n;i++ )
    		//	printf("%lf ",dis[ i ]);
    		//puts("");
    		printf("%.2lf
    ",dis[ n-s+1 ]);
    	}
    	return 0;
    }
    
    



  • 相关阅读:
    GateWay程序分析02_IAP_FLASH.H
    GateWay程序分析05_WDT.h
    GateWay程序分析03_timer.h
    GateWay程序分析_主函数_02整体流程
    网关系统软件设计_系统需求分析v1
    [收藏]DIV中图片居中
    CSS HACK 手记
    一道题“谁养鱼”的穷举解法。
    简单好用的联动下拉控件(修正)
    权限认证的WEB页面实施
  • 原文地址:https://www.cnblogs.com/james1207/p/3268779.html
Copyright © 2011-2022 走看看