AOJ 2249 Road Construction(Dijkstra+优先队列)
【题目大意】 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2249
【题目大意】
一张无向图,建造每条道路需要的费用已经给出,
现在求在起点到每个点都是最短路的情况下的最小修路费用
【题解】
考虑到最后的图一定是树形的,因此只要保留每个点与其父节点之间的边的费用最小值即可
在计算最短路的同时不断更新费用
【代码】
#include <cstdio>
#include <cstring>
#include <queue>
#include <utility>
using namespace std;
const int N=2000100;
const int INF=~0U>>2;
typedef pair<int,int>seg;
priority_queue<seg,vector<seg>,greater<seg> >q;
int d[N],D[N],head[N],u[N],v[N],w[N],nxt[N],cost[N],n,m,a,b,c,cc,ed=0,H,x[N],y[N];
bool vis[N];
void add(int a,int b,int c,int cos){
u[++ed]=a,v[ed]=b,w[ed]=c;cost[ed]=cos;
nxt[ed]=head[u[ed]]; head[u[ed]]=ed;
}
void Dijkstra(int src){
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)d[i]=INF;
d[src]=0;
q.push(make_pair(d[src],src));
while(!q.empty()){
seg now=q.top(); q.pop();
int x=now.second;
if(d[x]<now.first)continue;
for(int e=head[x];e!=-1;e=nxt[e])
if(d[v[e]]>d[x]+w[e]){
d[v[e]]=d[x]+w[e];
D[v[e]]=cost[e];
q.push(make_pair(d[v[e]],v[e]));
}else if(d[v[e]]==d[x]+w[e]){
D[v[e]]=min(cost[e],D[v[e]]);
}
}
}
int main(){
while(~scanf("%d%d",&n,&m),m+n){
memset(head,-1,sizeof(head));ed=0;
memset(nxt,-1,sizeof(nxt));
while(m--){
scanf("%d%d%d%d",&a,&b,&c,&cc);
add(a,b,c,cc);add(b,a,c,cc);
}Dijkstra(1);
int ans=0;
for(int i=2;i<=n;i++)ans+=D[i];
printf("%d\n",ans);
}return 0;
}
AOJ 2249 Road Construction(Dijkstra+优先队列)的更多相关文章
- AOJ 2249 Road Construction (dijkstra)
某国王需要修路,王国有一个首都和多个城市,需要修路.已经有修路计划了,但是修路费用太高. 为了减少修路费用,国王决定从计划中去掉一些路,但是需要满足一下两点: 保证所有城市都能连通 所有城市到首都的最 ...
- Aizu - 2249 Road Construction
题目:给出若干个建筑之间的一些路,每条路都有对应的长度和需要的花费,问在保证源点1到其他个点的距离最短的情况下,最少的花费是多少/ 思路:和一般的最短路问题相比,多了一个 数组id[i],用来记录到达 ...
- 【Aizu - 2249】Road Construction(最短路 Dijkstra算法)
Road Construction Descriptions Mercer国王是ACM王国的王者.他的王国里有一个首都和一些城市.令人惊讶的是,现在王国没有道路.最近,他计划在首都和城市之间修建道路, ...
- 【poj 1724】 ROADS 最短路(dijkstra+优先队列)
ROADS Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12436 Accepted: 4591 Description N ...
- 地铁 Dijkstra(优先队列优化) 湖南省第12届省赛
传送门:地铁 思路:拆点,最短路:拆点比较复杂,所以对边进行最短路,spfa会tle,所以改用Dijkstra(优先队列优化) 模板 /******************************** ...
- POJ3352 Road Construction(边双连通分量)
...
- POJ3352 Road Construction (双连通分量)
Road Construction Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Sub ...
- POJ 1511 - Invitation Cards (dijkstra优先队列)
题目链接:http://poj.org/problem?id=1511 就是求从起点到其他点的最短距离加上其他点到起点的最短距离的和 , 注意路是单向的. 因为点和边很多, 所以用dijkstra优先 ...
- poj 3352 Road Construction【边双连通求最少加多少条边使图双连通&&缩点】
Road Construction Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10141 Accepted: 503 ...
随机推荐
- mysql 主键自增
比如创建表格,表格ID需要自增 将ID设置成主键,并配置auto_increment 例: create table test( id int(4) not null primary key ...
- 【测试环境】java|jdk|ant
很多文章都有写啊,我只是汇总一下:现在java已经是1.7+了,但是我们很多的时候开发环境还是在1.5.16左右,需要自己去配置: 0.为了方便切换测试环境,我们可以把jdk放到一个比较固定的位置.比 ...
- 从一个Bug说开去--解决问题的思路,Linked Server, Bulk Insert, DataTable 作为参数传递
声名— 部分内容为杜撰,如有雷同,不胜荣幸! 版权所有,如要引用,请标明出处! 如果打赏,请自便! 1 背景介绍 最近一周在忙一个SQL Server 的Bug,一个简单的Bug,更新两张 ...
- HTML 5 <details> 标签
<details> 标签用于描述文档或文档某个部分的细节. <details> <summary>Copyright 2011.</summary> & ...
- ps 导出png-8图片会变模糊
出现这种情况的时候,在保存png-8图片的时候,索引色需要改为256,否则保存的图片颜色与原图会不一致.
- ios ViewController present不同的方向
First ViewController CATransition *transition = [CATransition animation]; transition.duration = 0.3; ...
- H264源码分析(二)
原文出自http://blog.csdn.net/xfding/article/details/5476763(转载收集) (四)图像参数集语义 pic_parameter_set_rbsp( ) { ...
- OAuth2.0认证介绍
OAuth2.0鉴权 返回 目录 [隐藏] 1 腾讯微博OAuth2.0认证介绍 2 获取accesstoken的两种方式 2.1 1.Authorization code grant 2.1.1 第 ...
- java整合easyui进行的增删改操作
首先发一下效果图 显示全部用户信息 加入用户信息 删除用户信息 编辑用户信息 以下就来介绍一下easyui的crud,在java中是怎么与后台进行交换的 前台html页面,我将它命名为crud1.ht ...
- HTML5添加背景音乐
html5 audio 给博客 网页加背景音乐 可以加上个按钮或者链接 让其可停止或暂停 下面代码只是暂停 可以弄成暂停 播放两种状态切换.. 可以考虑换成a标签 <a href="# ...