hdu 1875 畅通工程再续

简介: 点击打开链接hdu 1875 /*1思路:最小生成树+prime(模板题)*/#include#include#include#include#includeusing namespace std;#define M...

点击打开链接hdu 1875



/*
1思路:最小生成树+prime(模板题)
*/
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
#define MAXN 110
#define INF 0xFFFFFFF

int t , c;
double ans;
double lowcost[MAXN];
double G[MAXN][MAXN];
struct Point{
    int x;
    int y;
}p[MAXN];

void init(){
    for(int i = 1 ; i <= c ; i++){
       for(int j = 1 ; j <= c ; j++){
         double tmp_x = (p[i].x-p[j].x)*(p[i].x-p[j].x);
         double tmp_y = (p[i].y-p[j].y)*(p[i].y-p[j].y);
         double tmp =  sqrt(tmp_x + tmp_y);
         if(tmp < 10 || tmp > 1000)
           G[i][j] = INF;
         else
           G[i][j] = tmp;
       }
    }
}

void Prime(){
     int pos;
     double min;
     int vis[MAXN];
     memset(vis , 0 , sizeof(vis));
     init();
     vis[1] = 1;
     ans = 0;
     for(int i = 1 ; i <= c ; i++)     
        lowcost[i] = G[1][i];
     for(int i = 1 ; i <= c ; i++){
        min = INF;
        for(int j = 1 ; j <= c ; j++){
           if(!vis[j] && min > lowcost[j]){
              pos = j;
              min = lowcost[j];
           }
        }
        if(min == INF)
          break;
        ans += min;
        vis[pos] = 1;
        for(int j = 1 ; j <= c ; j++){
           if(!vis[j] && lowcost[j] > G[pos][j])
             lowcost[j] = G[pos][j];
        }
     }
     if(G[1][c] != INF)
       printf("%.1lf\n" , ans*100);
     else
       printf("oh!\n");
}

int main(){
   // freopen("input.txt" , "r" , stdin);
    scanf("%d" , &t);
    while(t--){
       scanf("%d" , &c);
       for(int i = 1 ; i <= c ; i++) 
          scanf("%d%d" , &p[i].x , &p[i].y);
       Prime();
    }
    return 0;
}




目录
相关文章
|
4天前
|
Java 测试技术
HDU-1232-畅通工程(未完待续)
HDU-1232-畅通工程(未完待续)
9 0
|
4天前
|
Java 测试技术
HDU-1233-还是畅通工程
HDU-1233-还是畅通工程
10 0
|
7月前
hdu 2502 月之数
hdu 2502 月之数
17 0
【洛谷】三连击
P1618 三连击(升级版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
65 0
畅通工程 HDU - 1232
畅通工程 HDU - 1232
57 0
|
算法
HDU - 2063: 过山车
HDU - 2063: 过山车
113 0
洛谷 P2155 BZOJ 2186 codevs 2301 [SDOI2008]沙拉公主的困惑
题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票。房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量。
1033 0
|
Java 测试技术
HDU 1232 畅通工程
畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 50540    Accepted Submission(s): 26968 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。
1002 0