标签:des os io for 2014 art cti ar
Arctic NetworkWaterloo local 2002.09.28
/*********************************************
        author    :    Grant Yuan
        time      :    2014.7.31
        algorithm :    Prim
        source    :    POJ 2349
        
**********************************************/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
#define INF 0x3fffffff
#define MAX 507
using namespace std;
struct point{int x;int y;};
int t,n,p;
point v[MAX];
double cost[MAX][MAX];
bool used[MAX];
double mincost[MAX];
priority_queue<double>path;
void prim()
{
   for(int i=1;i<=n;i++)
   {
       mincost[i]=INF;
       used[i]=false;
   }
   mincost[1]=0;
   for(int i=1;i<=n;i++)
   {
     double temp=INF;int k=1;
     for(int j=1;j<=n;j++)
     {
         if(!used[j]&&mincost[j]<temp)
         {
             temp=mincost[j];
             k=j;
         }
     }
     path.push(temp);
     used[k]=true;
     for(int j=1;j<=n;j++)
     {
         mincost[j]=min(mincost[j],cost[k][j]);
     }
   }
}
int main()
{
   scanf("%d",&t);
   while(t--){
    while(!path.empty())
          path.pop();
    scanf("%d%d",&p,&n);
    for(int i=1;i<=n;i++)
    {   
        scanf("%d%d",&v[i].x,&v[i].y);
    }
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
    {
        cost[i][j]=INF;
        cost[i][j]=cost[j][i]=sqrt(1.0*(v[i].x-v[j].x)*(v[i].x-v[j].x)+1.0*(v[i].y-v[j].y)*(v[i].y-v[j].y));
    }
    prim();
    for(int i=1;i<p;i++)
        path.pop();
    printf("%.2f\n",path.top());
   }
    return 0;
}
标签:des os io for 2014 art cti ar
原文地址:http://blog.csdn.net/yuanchang_best/article/details/38318653