CCF 交通规划(Dijkstra+优先队列)
交通规划
1 2 4
1 3 5
2 3 2
2 4 3
3 4 2
#include<cstdio>
#include<queue>
#include<vector>
#define maxn 100005
#define inf 0x7fffffff
int n,m;
using namespace std;
struct Point
{
int u;
int dist;
Point(int uu,int d){
u=uu,dist=d;
}
friend bool operator < (Point a,Point b) {
return a.dist > b.dist;
}
};
struct Edge
{
int v;
int cost;
Edge(int vv,int c){
v=vv,cost=c;
}
};
vector<Edge> G[maxn];
bool vis[maxn];
int disto[maxn];
int costo[maxn]; void Dijkstra(int s)
{
for(int i=;i<=n;i++){
vis[i]=false;
disto[i]=costo[i]=inf;
}
disto[s]=;
costo[s]=;
priority_queue<Point> queue;
queue.push(Point(s,));
while(!queue.empty()){
Point p=queue.top();
queue.pop();
int u=p.u;
if(!vis[u]){
for(int i=;i<G[u].size();i++){
int v=G[u][i].v;
int co=G[u][i].cost;
if(!vis[v]){
if(disto[v]>disto[u]+co){
disto[v]=disto[u]+co;
queue.push(Point(v,disto[v]));
costo[v]=co;
}
if(disto[v]==disto[u]+co){
costo[v]=min(costo[v],co);
}
}
}
}
}
}
int main()
{
int u,v,c;
scanf("%d%d",&n,&m);
while(m--){
scanf("%d%d%d",&u,&v,&c);
G[u].push_back(Edge(v,c));
G[v].push_back(Edge(u,c));
}
Dijkstra();
int ans=;
for(int i=;i<=n;i++)
ans+=costo[i];
printf("%d",ans);
}
CCF 交通规划(Dijkstra+优先队列)的更多相关文章
- ccf交通规划
一.试题 问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家也建设一个高速铁路系统. 建设高速铁路投入非常大,为了节约建设成本,G国国王决定不新建铁路,而是将已有的铁路改 ...
- 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国国王决定不新建铁路,而是将已有的铁路改造成 ...
- 地铁 Dijkstra(优先队列优化) 湖南省第12届省赛
传送门:地铁 思路:拆点,最短路:拆点比较复杂,所以对边进行最短路,spfa会tle,所以改用Dijkstra(优先队列优化) 模板 /******************************** ...
- POJ 1511 - Invitation Cards (dijkstra优先队列)
题目链接:http://poj.org/problem?id=1511 就是求从起点到其他点的最短距离加上其他点到起点的最短距离的和 , 注意路是单向的. 因为点和边很多, 所以用dijkstra优先 ...
- 【bzo1579】拆点+dijkstra优先队列优化+其他优化
题意: n个点,m条边,问从1走到n的最短路,其中有K次机会可以让一条路的权值变成0.1≤N≤10000;1≤M≤500000;1≤K≤20 题解: 拆点,一个点拆成K个,分别表示到了这个点时还有多少 ...
- 【poj 1724】 ROADS 最短路(dijkstra+优先队列)
ROADS Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12436 Accepted: 4591 Description N ...
- (模板)poj2387(dijkstra+优先队列优化模板题)
题目链接:https://vjudge.net/problem/POJ-2387 题意:给n个点(<=1000),m条边(<=2000),求结点n到结点1的最短路. 思路:dijkstra ...
随机推荐
- Oracle dbms_random随机数包详解
Oracle dbms_random包主要用于获得随机数,可以为数字也可以为字母等,还可以实现混拼.常用函数如下: dbms_random.value 生成一个指定范围的38位随机小数(小数点后38位 ...
- P2483 [SDOI2010]魔法猪学院
P2483 [SDOI2010]魔法猪学院 摘要 --> 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世 ...
- AWS系列-添加购买的https证书
1.1 自行购买证书 1.2 上传证书 打开EC2的负载均衡 选择相应的ALB 添加侦听器 选择https 端口443 选择目标组 证书类型 上传证书到IAM 证书名称填写申请证书时候的那个域名 私有 ...
- 第二十五篇:使用 sigaction 函数实现可靠信号
前言 在前文中,讲述了一个可靠信号的示例.它分成几个步骤组成( 请参考前文 ).在 Linux 系统编程中,有个方法可以将这些步骤给集成起来,让我们使用起来更加的方便. 那就是调用 sigaction ...
- fopen与读写的标识r,r+,rb+,rt+,w+.....
FILE * fopen(const char * path,const char * mode); 参数mode字符串则代表着流形态. mode有下列几种形态字符串: r 打开只读文件,该文件必须存 ...
- android how to deal with data when listview refresh
如何解决listview数据刷新,下拉刷新,上拉加载更多时,图片不闪烁. 在Activity的onResume()方法中将adaper和listView重新再绑定一次. listView.setAda ...
- JPA criteria 查询:类型安全与面向对象
参考:https://my.oschina.net/zhaoqian/blog/133500 一.JPA元模型概念,及使用 在JPA中,标准查询是以元模型的概念为基础的.元模型是为具体持久化单元的受管 ...
- ZOJ 3605 Find the Marble(dp)
Find the Marble Time Limit: 2 Seconds Memory Limit: 65536 KB Alice and Bob are playing a game. ...
- SLAM论文阅读笔记
[1]陈卫东, 张飞. 移动机器人的同步自定位与地图创建研究进展[J]. 控制理论与应用, 2005, 22(3):455-460. [2]Cadena C, Carlone L, Carrillo ...
- 通过TZ来设置嵌入式ARM+Linux的时区
1.在/etc/profile或者/root/.profile(/home/username/.profile) 在其中加入: TZ=UTC-08:00 export TZ hwclock -s