7-12 畅通工程之最低成本建设问题(30 point(s)) 【PRIME】
7-12 畅通工程之最低成本建设问题(30 point(s))
某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了有可能建设成快速路的若干条道路的成本,求畅通工程需要的最低成本。
输入格式:
输入的第一行给出城镇数目N (1 < N ≤ 1000)和候选道路数目M≤3N;随后的M行,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号(从1编号到N)以及该道路改建的预算成本。
输出格式:
输出畅通工程需要的最低成本。如果输入数据不足以保证畅通,则输出“Impossible”。
输入样例1:
6 15
1 2 5
1 3 3
1 4 7
1 5 4
1 6 2
2 3 4
2 4 6
2 5 2
2 6 6
3 4 6
3 5 1
3 6 1
4 5 10
4 6 8
5 6 3
输出样例1:
12
输入样例2:
5 4
1 2 1
2 3 2
3 1 3
4 5 4
输出样例2:
Impossible
思路
每次从 现有的点 中 寻找一根 最短路径 到达 一个 未访问过的点
然后每一步操作 加上其 权值
最后 如果 入队的点 不够 N 的话 就是 不可以
AC代码
#include <cstdio>
#include <cstring>
#include <ctype.h>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <map>
#include <stack>
#include <set>
#include <numeric>
#include <sstream>
#include <iomanip>
#include <limits>
#define CLR(a) memset(a, 0, sizeof(a))
#define pb push_back
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef pair<string, int> psi;
typedef pair<string, string> pss;
const double PI = 3.14159265358979323846264338327;
const double E = exp(1);
const double eps = 1e-30;
const int INF = 0x3f3f3f3f;
const int maxn = 1e3 + 5;
const int MOD = 1e9 + 7;
int G[maxn][maxn];
int lowCost[maxn];
int n, m;
int findMin()
{
int Min = INF;
int flag = 0;
for (int i = 1; i <= n; i++)
{
if (lowCost[i] && lowCost[i] < Min)
{
Min = lowCost[i];
flag = i;
}
}
return flag;
}
int prime()
{
int ans = 0;
for (int i = 1; i <= n; i++)
lowCost[i] = G[1][i];
lowCost[1] = 0;
for (int i = 2; i <= n; i++)
{
int k = findMin();
if (k)
{
ans += lowCost[k];
lowCost[k] = 0;
for (int j = 1; j <= n; j++)
{
if (lowCost[j] && G[k][j] < lowCost[j])
lowCost[j] = G[k][j];
}
}
else
return -1;
}
return ans;
}
int main()
{
memset(G, 0x3f, sizeof(G));
scanf("%d%d", &n, &m);
for (int i = 0; i < n; i++)
G[i][i] = 0;
int x, y, v;
for (int i = 0; i < m; i++)
{
scanf("%d%d%d", &x, &y, &v);
G[x][y] = G[y][x] = v;
}
int ans = prime();
if (ans == -1)
printf("Impossible\n");
else
cout << ans << endl;
}
7-12 畅通工程之最低成本建设问题(30 point(s)) 【PRIME】的更多相关文章
- PTA 7-3 畅通工程之最低成本建设问题 (30分)
PTA 7-3 畅通工程之最低成本建设问题 (30分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括 ...
- PTA 畅通工程之最低成本建设问题(30 分)(最小生成树 krusal)
畅通工程之最低成本建设问题(30 分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路 ...
- HDU1879 继续畅通工程 2017-04-12 19:12 50人阅读 评论(0) 收藏
继续畅通工程 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submis ...
- 所有的畅通工程[HDU1232][HDU1874][HDU1875][HDU1879]
畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissio ...
- 畅通工程[HDU1863]
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissio ...
- 畅通工程——D
D. 畅通工程 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的 ...
- hdu 1863 - 畅通工程(MST)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 1863 畅通工程
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- hdoj 1863 畅通工程
并查集+最小生成树 畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
随机推荐
- OS | Socket
TCP 创建socket: int socket(int domain, int type, int protocol); AF = Address FamilyPF = Protocol Famil ...
- 板子-GOD BLESS ALL OF YOU
字符串: KMP #include<cstdio> #include<cstring> ; ]; ]; int l1,l2; void get_next() { next[]= ...
- 使用一个数组存储一个英文句子"java is an object oriented programing language"
class fun { public static void main(String[] args) { String str="java is an object oriented pro ...
- python pip包管理器安装
下载 http://peak.telecommunity.com/dist/ez_setup.py 执行:python ez_setup.py 下载: http://pypi.python.or ...
- windows上安装Ipython notebook
最近有一个培训机构找笔者来做一份Python的培训教材,顺带着研究了下python notebook,发现很好很强大,现把初步的安装步骤记录如下: 1.安装Python ...
- Cef应用程序结构
Application Structure 应用程序结构 Every CEF3 application has the same general structure. Provide an entry ...
- 提高在Xcode上的工作效率
对于在Xcode上提高工作效率,内功在这不提,对于外力,我将它分为三类: 工具.快捷键和小技巧.主要获得的路径是通过平时积累和看 WWDC12 上的 Session 402:Working Effic ...
- sublime快捷键设置
1.sublime自带的快捷键设置:这里的super在mac下是指command键 右边的内容表示用户自定义的快捷键:比如如图所示command+d表示复制光标所在行 常用操作:复制粘贴什么的太常用的 ...
- SilverLight:基础控件使用(1)
ylbtech-SilverLight-Basic-Control:基础控件使用(1) 本文详解控件有: Label, TextBox, PasswordBox, Image, Button , Ra ...
- 怎样在ubuntu 系统上为 php 加上 redis 扩展
近期一个项目.,想用redis 作为数据库,php是不待redis 扩展,必须安装,怎么安装呢?我在网上找的非常多资料发现都是预编译的.但都没成功.于是就找了第二种方法是不须要编译直接安装就能够了. ...