POJ 2349 Arctic Network 最小生成树题解
来源:互联网 发布:期货交易程序化软件 编辑:程序博客网 时间:2024/05/17 02:40
本题也是使用Prime和Kruskal都可以的最小生成树的题解。
本题一点新意就是:需要除去最大的S-1个距离,因为可以使用卫星覆盖这些距离。
技巧:建图建有向图,速度快点,不用计算两边。
这里使用Prime,因为是稠密图。
#include <stdio.h>#include <math.h>#include <stdlib.h>#include <string.h>#include <limits.h>#include <algorithm>using std::sort;const int MAX_VEC = 501;struct Pos{int x, y;};float gra[MAX_VEC][MAX_VEC];Pos pos[MAX_VEC];float dist[MAX_VEC];bool vis[MAX_VEC];int N, S, P;float Prime(){memset(vis, 0, sizeof(bool) * P);vis[0] = true;for (int i = 0; i < P-1; i++){float m = (float)INT_MAX;int id = 0;for (int j = 0; j < P; j++){if (!vis[j] && gra[0][j] < m){m = gra[0][j];id = j;}}vis[id] = true;dist[i] = m;for (int j = 0; j < id; j++){if (!vis[j] && gra[0][j] > gra[j][id]) gra[0][j] = gra[j][id];;}for (int j = id+1; j < P; j++){if (!vis[j] && gra[0][j] > gra[id][j]) gra[0][j] = gra[id][j];}}sort(dist, dist+P-1);return dist[P-1-S];}int main(){scanf("%d", &N);while (N--){scanf("%d %d", &S, &P);for (int i = 0; i < P; i++){scanf("%d %d", &pos[i].x, &pos[i].y);}for (int i = 0; i < P; i++){for (int j = i+1; j < P; j++){float a = float(pos[i].x - pos[j].x);float b = float(pos[i].y - pos[j].y);gra[i][j] = sqrtf(a*a + b*b);}}printf("%.2f\n", Prime());}return 0;}
2 0
- POJ 2349 Arctic Network 最小生成树题解
- POJ 2349 Arctic Network [最小生成树]
- poj 2349 (最小生成树)Arctic Network
- POJ-2349 Arctic Network 最小生成树
- POJ 2349 Arctic Network 最小生成树
- poj-2349 Arctic Network 最小生成树
- poj 2349 Arctic Network 最小生成树
- poj 2349 Arctic Network 最小生成树
- poj 2349 Arctic Network 最小生成树~~
- Arctic Network (poj 2349 最小生成树)
- POJ 2349Arctic Network【最小生成树】
- 【最小生成树】POJ 2349 Arctic Network
- POJ 2349 Arctic Network 最小生成树
- POJ-2349-Arctic Network [最小生成树]
- POJ 2349 Arctic Network (最小生成树)
- POJ 2349 Arctic Network (最小生成树)
- POJ Arctic Network 【最小生成树】
- Arctic Network--POJ(最小生成树)
- android:listSelector,android:drawSelectorOnTop属性作用
- 关于hostent以及in_addr结构体
- 从文件中读入文本,文本内容为几个字符串,用逗号间隔,将其中同时含有字母和数字的字符串去除,留下仅仅只包含字母或数字的字符串,然后进行排序
- 【hoj】1031 背包问题
- 自适应屏幕大小
- POJ 2349 Arctic Network 最小生成树题解
- LeetCode || Gas Station
- 用 list 处理树状数据(邻接列表)
- 线索二叉树
- Linux常用命令
- C++ mem_fun 和 mem_fun_ref 的用法
- UVA 10047 bfs
- ubuntu12.04 安装配置jdk1.7
- Jenkins用户配置