Road Construction

题意:在一个无向图中,每条边上有建设的花费和路径的长度,要求求得,在保持每个点到1号点最小距离不变的情况下,求最小的总花费;

思路:用dijkstra 找出每个点的最小距离,再重新从1出发,找出每个点对应的最小花费;(一开始自己想的是直接在dijkstra的时候把花费算出来,好想不对)

#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
const int maxn = ;
const int inf =1e9; using namespace std; struct node{
int to,d,c;
node(){}
node (int to,int d,int c):to(to),d(d),c(c){}
};
vector<node>mp[maxn];
int dis[maxn],cost[maxn],n,m,ans = ;
void init(){
for(int i=;i<=n;i++)
{
mp[i].clear();
dis[i] = inf;
cost[i] = ;
}
}
void add(int u,int v,int d,int c)
{
mp[u].push_back(node(v,d,c));
}
int main(){
while(~scanf("%d%d",&n,&m))
{
if(n==&&m==)break;
init();
for(int i=;i<=m;i++)
{
int u,v,d,c;
scanf("%d%d%d%d",&u,&v,&d,&c);
add(u,v,d,c);
add(v,u,d,c);
} priority_queue<pair<int,int> >q;
dis[]=;
cost[]=; q.push (make_pair(-dis[],)) ;
while(!q.empty())
{
int now = q.top().second;
q.pop();
for(int i=;i<mp[now].size();i++)
{
int v=mp[now][i].to;
int d=mp[now][i].d;
int c=mp[now][i].c;
if(dis[v]>dis[now]+d)
{
dis[v] = dis[now]+d;
q.push (make_pair(-dis[v],v));
}
}
}
ans = ;
for(int i=;i<=n;i++) //计算最小花费
{
int minc = inf;
for(int j=;j<mp[i].size();j++) //只用算和已修好的点中最小的花费
{
node tmp = mp[i][j];
if(tmp.d+dis[tmp.to]==dis[i]&&minc>tmp.c)
{
minc = mp[i][j].c;
}
}
ans += minc;
}
printf("%d\n",ans);
}
return ;
}

AOJ-2249-Road Construction-dijkstra-最小花费的更多相关文章

  1. AOJ 2249 Road Construction (dijkstra)

    某国王需要修路,王国有一个首都和多个城市,需要修路.已经有修路计划了,但是修路费用太高. 为了减少修路费用,国王决定从计划中去掉一些路,但是需要满足一下两点: 保证所有城市都能连通 所有城市到首都的最 ...

  2. AOJ 2249 Road Construction(Dijkstra+优先队列)

    [题目大意] http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2249 [题目大意] 一张无向图,建造每条道路需要的费用已经给出, 现 ...

  3. Aizu - 2249 Road Construction

    题目:给出若干个建筑之间的一些路,每条路都有对应的长度和需要的花费,问在保证源点1到其他个点的距离最短的情况下,最少的花费是多少/ 思路:和一般的最短路问题相比,多了一个 数组id[i],用来记录到达 ...

  4. dijkstra最小花费

    //Gang #include<iostream> #include<cstring> #include<algorithm> #include<cstdio ...

  5. 【Aizu - 2249】Road Construction(最短路 Dijkstra算法)

    Road Construction Descriptions Mercer国王是ACM王国的王者.他的王国里有一个首都和一些城市.令人惊讶的是,现在王国没有道路.最近,他计划在首都和城市之间修建道路, ...

  6. 1344:【例4-4】最小花费 dijkstra

    1344:[例4-4]最小花费 Dijkstra (1)a [ i ] [ j ] 存转账率(..转后所得率..) (2)dis [ i ] 也就是 a [ 起点 ] [ i ] (3)f [ i ] ...

  7. Road Construction

    King Mercer is the king of ACM kingdom. There are one capital and some cities in his kingdom. Amazin ...

  8. AOJ-2249 Road Construction(最短路)

    http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=45523 有一个国王想在首都与各个城市之间修建公路,但是他的预算太高,所以必须 ...

  9. POJ3352 Road Construction(边双连通分量)

                                                                                                         ...

  10. POJ3352 Road Construction (双连通分量)

    Road Construction Time Limit:2000MS    Memory Limit:65536KB    64bit IO Format:%I64d & %I64u Sub ...

随机推荐

  1. Java核心技术(卷一)读书笔记——第二章(JAVA/JDK环境配置)

    JDK 配置:自行百度. 存在多个JDK 版本并且需要指定某版本时,注意更改注册表JavaSoft项以及相关子项,同时删除system32目录下相关的Java可执行文件xxx.exe. IDEA打开项 ...

  2. Python基础总结之第九天开始【python之OS模块对目录的操作、以及操作文件】(新手可相互督促)

    年薪20万的梦想...         python对文件.目录能做什么?或者说我们需要python替我们做什么?最经常的操作就是对文件的:打开.关闭.读取.写入.修改.保存等等对目录的操作,无非就是 ...

  3. .net持续集成测试篇之Nunit常见断言

    系列目录 Nunit测试基础之简单断言 在开始本篇之前需要补充一些内容,通过前面搭建Nunit测试环境我们知道要使一个方法成为单元测试方法首先要在此方法所在类加上TestFixture注解,并且在该方 ...

  4. VSTO之PowerPoint(PPT)插件开发常用API汇总

    VSTO简介 VSTO(Visual Studio Tools for Office )是VBA的替代,使得开发Office应用程序更加简单,并且用VSTO来开发office应用程序可以使用Visua ...

  5. Python开发异步任务Celery的使用教程!

    1. 生产者消费者设计模式 最常用的解耦方式之一,寻找中间人(broker)搭桥,保证两个业务没有直接关联.我们称这一解耦方式为:生产者消费者设计模式 2.中间人broker 示例:此处演示Redis ...

  6. hdu 6397 Character Encoding (生成函数)

    Problem Description In computer science, a character is a letter, a digit, a punctuation mark or som ...

  7. 『开发技术』Windows极简安装使用face_recognition

    face_recognition是一个强大.简单.易上手的人脸识别开源项目,并且配备了完整的开发文档和应用案例,特别是兼容树莓派系统.此项目是世界上最简洁的人脸识别库,你可以使用Python和命令行工 ...

  8. v-text,v-html等区别

    首先我们知道vue中有很多自定义指令,以v- 开头,例如:v-text,v-bind,v-model, v-if,等 在这些指令中,部分指令之间是很容易被混淆,所以今天决定自己总结一下以下几个相似指令 ...

  9. Scala类和对象(二)

    1. 类和属性 1.1 如何控制构造函数字段的可见性 在Scala中: 如果一个字段被声明为var, Scala会为该字段生成getter和setter方法. 如果字段是val, Scala只生成ge ...

  10. CSS3 Flex 布局教程

    网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂 ...