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. 通过ping命令了解三层转发流程

    ping命令:因特网包探索器.本文主要通过路由器两端不同网段PC互ping来讲解三层转发流程. 例子:PC-A是如何 ping 通 PC-C 的,有几种情况? 说明:1.在条件1阶段PC-C不会刷新a ...

  2. BrowserSync,自动刷新,解放F5,去掉更新提示

    BrowserSync虽然这个技术不算新,但是依然有用.略微介绍下 没有安装node,先安装node,这里不再做介绍 安装 npm install -g browser-sync  全局安装,方便在任 ...

  3. 大数阶乘(c++实现)

    #include <iostream>using namespace std;#define N 1000int BigNumFactorial(int Num[], int n);voi ...

  4. 进军pc市场 华为剑走偏锋可有戏?

    尽管官方并未正式公布,但在前段时间,华为将要进军PC市场的消息在业内传得沸沸扬扬,据知情人士曝料,其第一款个人电脑将在今年4月上线.而华为将进军PC市场的消息,对其他智能手机厂商来说又意味着什么呢? ...

  5. Flutter学习笔记(14)--StatefulWidget简单使用

    如需转载,请注明出处:Flutter学习笔记(14)--StatefulWidget简单使用 今天上班没那么忙,突然想起来我好像没StatefulWidget(有状态组件)的demo,闲来无事,写一个 ...

  6. Spring Cloud 相关资料链接

    Spring Cloud中文网:https://springcloud.cc/ Spring Cloud API:https://springcloud.cc/spring-cloud-dalston ...

  7. 【算法】【查找】二分法 Bisection

    #include<stdio.h> int main(){ ,,,,,,,,,,,,,,}; ; //长度 ; //要查找到的值 int Bisection(int x,int* a,in ...

  8. 【Java笔记】【Java核心技术卷1】chapter3 D2注释

    package chapter3; /** * 文档注释 *@author lp *@version 1 **/ public class D2注释 { //单行注释 /* 长注释 */ }

  9. SpringBoot:如何优雅地处理全局异常?

    之前用springboot的时候,只知道捕获异常使用try{}catch,一个接口一个try{}catch,这也是大多数开发人员异常处理的常用方式,虽然屡试不爽,但会造成一个问题,就是一个Contro ...

  10. Elasticsearch实战 | 必要的时候,还得空间换时间!

    1.应用场景 实时数据流通过kafka后,根据业务需求,一部分直接借助kafka-connector入Elasticsearch不同的索引中. 另外一部分,则需要先做聚类.分类处理,将聚合出的分类结果 ...