问题描述

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

评测用例规模与约定

  对于20%的评测用例,1 ≤ n ≤ 10,1 ≤ m ≤ 50;
  对于50%的评测用例,1 ≤ n ≤ 100,1 ≤ m ≤ 5000;
  对于80%的评测用例,1 ≤ n ≤ 1000,1 ≤ m ≤ 50000;
  对于100%的评测用例,1 ≤ n ≤ 10000,1 ≤ m ≤ 100000,1 ≤ a, b ≤ n,1 ≤ c ≤ 1000。输入保证每个城市都可以通过铁路达到首都。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;
const int N=1e4+10;
const int inf=1e8-1;
struct edge
{int to;int cost;edge(){}edge(int a,int b){to=a;cost=b;}
};
struct node
{int id;int cost;node(int a,int b){id=a;cost=b;}bool operator < (const node &u) const{return cost>u.cost;}
};
vector<edge> g[N];
int dist[N],f[N]; //f[]数组存储到每个节点的单条路径花费
int n,m;
void init()
{for(int i=0;i<=n;i++)dist[i]=f[i]=inf;dist[1]=0;
}
void dj()
{priority_queue<node> q;q.push(node(1,0));while(!q.empty()){node x=q.top();q.pop();int u=x.id;int t=x.cost;int l=g[u].size();for(int i=0;i<l;i++){if(dist[g[u][i].to]>dist[u]+g[u][i].cost||dist[g[u][i].to]==dist[u]+g[u][i].cost&&f[g[u][i].to]>g[u][i].cost) //更短路或者是同短路加花费更小{dist[g[u][i].to]=dist[u]+g[u][i].cost;q.push(node(g[u][i].to,dist[g[u][i].to]));f[g[u][i].to]=g[u][i].cost; //更新花费}}}
}
int main()
{int a,b,c;scanf("%d%d",&n,&m);for(int i=0;i<m;i++){scanf("%d%d%d",&a,&b,&c);g[a].push_back(edge(b,c));g[b].push_back(edge(a,c));}init();dj();int ans=0;for(int i=2;i<=n;i++)ans+=f[i];printf("%d\n",ans);return 0;
}

CCF系列题解--2016年9月第四题 交通规划相关推荐

  1. CCF系列题解--2016年4月第四题 方格游戏

    问题描述 小明在玩一个电脑游戏,游戏在一个n×m的方格图上进行,小明控制的角色开始的时候站在第一行第一列,目标是前往第n行第m列. 方格图上有一些方格是始终安全的,有一些在一段时间是危险的,如果小明控 ...

  2. CCF系列题解--2016年12月第三题 权限查询

    问题描述 授权 (authorization) 是各类业务系统不可缺少的组成部分,系统用户通过授权机制获得系统中各个模块的操作权限. 本题中的授权机制是这样设计的:每位用户具有若干角色,每种角色具有若 ...

  3. CCF系列题解--2013年12月第四题 有趣的数字

    问题描述 我们把一个数称为有趣的,当且仅当:        1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次.        2. 所有的0都出现在所有的1之前,而所有的2都出现 ...

  4. CCF系列题解--2016年9月第二题 火车购票

    问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10 ...

  5. CCF系列题解--2015年3月第三题 节日

    问题描述 有一类节日的日期并不是固定的,而是以"a月的第b个星期c"的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日. 现在,给你a,b,c和y1, y2(1850 ≤ ...

  6. CCF系列题解--2018年3月第三题 URL映射

    问题描述 URL 映射是诸如 Django.Ruby on Rails 等网页框架 (web frameworks) 的一个重要组件.对于从浏览器发来的 HTTP 请求,URL 映射模块会解析请求中的 ...

  7. CCF系列题解--2015年12月第三题 ASCII字符画

    问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术.例如,下图是用 ASCII 字符画出来的 CSPRO 字样. ..____.____..____. ...

  8. CCF系列题解--2017年12月第三题 Crontab

    样例输入 3 201711170032 201711222352 0 7 * * 1,3-5 get_up 30 23 * * Sat,Sun go_to_bed 15 12,18 * * * hav ...

  9. CCF系列题解--2015年12月第二题 棋类消除

    问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消 ...

最新文章

  1. 手把手教你用python抢票回家过年 !(附代码)
  2. OpenCascade Primitives BRep-Cylinder
  3. log4.properties文件【笔记自用】
  4. html和xhtml和html5一些区别和笔记
  5. 源码实战 | 本地可跑,上线就崩?慌了!
  6. 【NLP傻瓜式教程】手把手带你fastText文本分类(附代码)
  7. 手把手教你剖析vue响应式原理,监听数据不再迷茫
  8. 【渝粤题库】广东开放大学 综合英语1 形成性考核 (2)
  9. linux 复制分区文件,dd复制分区后目标分区的大小变成原分区了
  10. 开源 区块链_区块链如何补充开源
  11. 事务例子_Spring事务专题(四)Spring中事务的使用、抽象机制及模拟Spring事务实现...
  12. mysql unable to find_centos8.2安装mysql8.0时报错Error:Unable to find a match: mysql-community-server...
  13. 阿里云上运行Docker版本的PostgreSQL
  14. linux+tar高级用法,Linux tar命令高级用法——备份数据
  15. Underscore.js
  16. 数值分析(3)-多项式插值: 牛顿插值法
  17. web前端工程师工资待遇 各阶段所需要的技术
  18. 计算机远程桌面连接软件,windows7远程桌面连接软件 提取自最新windows7,可运行于XP...
  19. (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  20. 美国电话号码正则表达式

热门文章

  1. Linux基础,系统概叙与虚拟机搭建+CentOS系统安装(建议收藏)
  2. 用HTML+CSS做一个漂亮简单的旅游网站——旅游网页设计与实现(6页)HTML+CSS+JavaScript
  3. STM32 SPI NSS大揭秘
  4. Java基础练习:用户在控制台输入一个年份,判断该年份是平年还是闰年
  5. python控制nao机器人_python 程序控制NAO机器人行走
  6. excel不小心点不保存_小心自己不喜欢的东西
  7. 南加大计算机本科学费,南加州大学学费多少
  8. Fluent UDF中直接调用math.h中的误差函数erf、erfc
  9. 2013年最忧伤的句子
  10. 从王庆根自杀到欧建新自杀之我见