交通规划_dijkstra
问题描述
G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家也建设一个高速铁路系统。
建设高速铁路投入非常大,为了节约建设成本,G国国王决定不新建铁路,而是将已有的铁路改造成高速铁路。现在,请你为G国国王提供一个方案,将现有的一部分铁路改造成高速铁路,使得任何两个城市间都可以通过高速铁路到达,而且从所有城市乘坐高速铁路到首都的最短路程和原来一样长。请你告诉G国国王在这些条件下最少要改造多长的铁路。
输入格式
输入的第一行包含两个整数n, m,分别表示G国城市的数量和城市间铁路的数量。所有的城市由1到n编号,首都为1号。
接下来m行,每行三个整数a, b, c,表示城市a和城市b之间有一条长度为c的双向铁路。这条铁路不会经过a和b以外的城市。
输出格式
输出一行,表示在满足条件的情况下最少要改造的铁路长度。
样例输入
4 5
1 2 4
1 3 5
2 3 2
2 4 3
3 4 2
样例输出
11
#include <iostream>
#include <queue>
#include <vector> #define NMAX 10005
#define INTMAX 0x7fffffff using namespace std; // v表示节点,cost表示出发点到v点的距离
struct Node {
int v;
int cost;
Node(int vv = , int c = ) {
v = vv, cost = c;
}
// 优先队列将按距离从小到大排列
friend bool operator < (Node n1, Node n2) {
return n1.cost > n2.cost;
}
}; // v表示边的另一端节点,cost表示该边的权重
struct Edge {
int v;
int cost;
Edge(int vv = , int c = ) {
v = vv, cost = c;
}
}; vector<Edge>G[NMAX]; // 无向图
bool marked[NMAX]; // D算法中每个顶点仅处理一遍
int disto[NMAX]; // 出发点到某点距离
int costo[NMAX]; // 接通该点需要增加的边的权重
int N, M; void dijkstra(int s) {
for (int i = ; i <= N; i++) {
costo[i] = disto[i] = INTMAX;
marked[i] = false;
}
disto[s] = ;
costo[s] = ;
priority_queue<Node>pq; // 保存<v,disto[v]>且按disto[v]升序排列
pq.push(Node(s, ));
marked[] = true; Node tmp;
while (!pq.empty()) {
tmp = pq.top();
pq.pop();
int v = tmp.v;
if (!marked[v]) {
marked[v] = true;
int len = G[v].size();
for (int i = ; i < len; i++) {
int vv = G[v][i].v;
if (marked[vv])
continue;
int cost = G[v][i].cost;
int newdist = disto[v] + cost;
if (disto[vv] > newdist) {
disto[vv] = newdist;
costo[vv] = cost; // 增加的内容
pq.push(Node(vv, disto[vv]));
}
// 增加的内容
// 加入点vv时若出现多种距离相同的方案,选取新边最小那个
if (disto[vv] == newdist) {
costo[vv] = min(costo[vv], cost);
}
}
}
}
} int main(void) {
cin >> N >> M; int s, e, c;
for (int i = ; i < M; i++) {
cin >> s >> e >> c;
G[s].push_back(Edge(e, c));
G[e].push_back(Edge(s, c));
}
dijkstra(); // 统计边权重
int res = ;
for (int i = ; i <= N; i++) {
res += costo[i];
cout << "dis" << disto[i] << endl;
}
cout << res << endl; return ;
}
交通规划_dijkstra的更多相关文章
- CCF 201609-4 交通规划
问题描述 试题编号: 201609-4 试题名称: 交通规划 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家 ...
- CCF CSP 201609-4 交通规划
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201609-4 交通规划 问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自 ...
- CCF 交通规划(Dijkstra+优先队列)
交通规划 问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家也建设一个高速铁路系统. 建设高速铁路投入非常大,为了节约建设成本,G国国王决定不新建铁路,而是将已有的铁路改造成 ...
- ccf交通规划
一.试题 问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家也建设一个高速铁路系统. 建设高速铁路投入非常大,为了节约建设成本,G国国王决定不新建铁路,而是将已有的铁路改 ...
- 【CCF】交通规划 Dijstra变形 优先级队列重载
[题意] 给定一个无向图,求这个图满足所有点到顶点的最短路径不变的最小生成树 [AC] 注意双向边要开2*maxm 注意优先级队列 参考https://www.cnblogs.com/cielosun ...
- CCF-CSP题解 201609-4 交通规划
最小最短路径树. \(dis[j]==dis[i]+w(i,j)\)时,从\(w(i,j')\)和\(w(i,j)\)考虑.--从0分到100分. #include <bits/stdc++.h ...
- CCF_201612-4_交通规划
http://115.28.138.223/view.page?gpid=T44 好像也没想象中的那么难,没办法,当初连个优先队列dij都不会写= = 在优先队列dij算法上加上相等的时候的处理就可以 ...
- CSP-201609-4 交通规划
问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家也建设一个高速铁路系统. 建设高速铁路投入非常大,为了节约建设成本,G国国王决定不新建铁路,而是将已有的铁路改造成高速铁路. ...
- VIJOS1476旅游规划[树形DP 树的直径]
描述 W市的交通规划出现了重大问题,市政府下决心在全市的各大交通路口安排交通疏导员来疏导密集的车流.但由于人员不足,W市市长决定只在最需要安排人员的路口安放人员.具体说来,W市的交通网络十分简单,它包 ...
随机推荐
- python type
基于2.7 版本 type 是内置函数,有两种用法 class type(object) With one argument, return the type of an object. The re ...
- 异常来自 HRESULT:0x800A01A8
Windows 10 Enterprise Microsoft Office 2013 – Excel Oracle BI Publisher Desktop 11.1.1.7 异常来自 HRESUL ...
- js可以控制文件上传的速度吗?
为了减轻服务器负载,对于上传和下载的情况,我们需要进行流量控制,一般的方法是服务端做限流举措,比如很多ftp服务器,但是我想是不是可以使用前端js做呢? 顺着这个想法,我查了下资料,目前来看结论是No ...
- BUPT复试专题—Python List(2014)
题目描述 在Python中,List (列表)是一种非常重要的数据结构.它与C/C++/Java中的 数组有些类似,但支持添加新元素时的动态扩展.在这个问题中,你需要处理如下 的几种对List的操作. ...
- php-cpp用来开发php的拓展
官网: http://www.php-cpp.com/documentation/install, 找时间要学一下.
- 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结
为什么说JAVA中要慎重使用继承 这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...
- Vue 建立工程
npm install -g vue npm install -g vue-cli vue init webpack my-project cd my-project npm isntall npm ...
- JavaScript提高:001:ASP.NET使用easy UI
jQuery EasyUI是一组基于jQuery的UI插件集合.能够简洁的开发出功能多内容丰富的界面,而不须要开发人员自己费力的写那些复杂的js代码.本文简介在ASP.NET开发中引用这些js文件和样 ...
- 2016/05/27 php上传文件常见问题总结
php上传文件常见问题总结 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2015-02-03我要评论 这篇文章主要介绍了php上传文件常见问题总结,基本上经常碰到的问题的处理都列了 ...
- 常用SQL备忘录
联表删除: delete t1,t2 from table_name t1 left join t2 on t1.id=t2.id where t1.id=23 (ps:该语句在mysql 5.0之前 ...