AOJ2249最短路+最小费用
题意:求出某个点到其他点的最短路,并求出在最短路情况下的最小费用
分析:用dijkstra求出最短路并同时更新最小费用即可,注意的是在最短路长度相同时费用取最小即可
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <bitset>
#include <cmath>
#include <queue>
#include <stack>
using namespace std;
const int maxn=;
const int INF=<<;
struct edge{
int to,dis,cost;
};
typedef pair<int,int> P;
int n,m;
vector<edge> g[maxn];
int d[maxn];
int pay[maxn];
void dijkstra(int s)
{
priority_queue<P,vector<P>, greater<P> >que;
fill(d,d+n+,INF);
fill(pay,pay+n+,INF);
d[s]=;
que.push(P(,s));
while(!que.empty())
{
P p=que.top(); que.pop();
int v=p.second;
if(d[v]<p.first) continue;
for(int i=;i<g[v].size();i++)
{
edge e=g[v][i];
//cout<<e.to<<"abd"<<endl;
if(d[e.to]>d[v]+e.dis){
d[e.to]=d[v]+e.dis;
pay[e.to]=e.cost;
//num[e.to]=min(num[e.to],pay[e.to]);
que.push(P(d[e.to],e.to));
}else if(d[e.to]==d[v]+e.dis){
pay[e.to]=min(e.cost,pay[e.to]);
}
}
}
}
int main()
{
while(cin>>n>>m)
{
if(n+m==) break;
for(int i=;i<=maxn-;i++) g[i].clear();
for(int i=;i<m;i++)
{
int u,v,d,c;
scanf("%d%d%d%d",&u,&v,&d,&c);
edge e;
e.to=v,e.dis=d,e.cost=c;
g[u].push_back(e);
edge e1;
e1.to=u,e1.dis=d,e1.cost=c;
g[v].push_back(e1);
}
dijkstra();
int sum=;
for(int i=;i<=n;i++){
sum+=pay[i];
}
cout<<sum<<endl;
}
return ;
}
AOJ2249最短路+最小费用的更多相关文章
- poj 2135 Farm Tour 最小费用最大流建图跑最短路
题目链接 题意:无向图有N(N <= 1000)个节点,M(M <= 10000)条边:从节点1走到节点N再从N走回来,图中不能走同一条边,且图中可能出现重边,问最短距离之和为多少? 思路 ...
- bzoj1927最小费用最大流
其实本来打算做最小费用最大流的题目前先来点模板题的,,,结果看到这道题二话不说(之前打太多了)敲了一个dinic,快写完了发现不对 我当时就这表情→ =_=你TM逗我 刚要删突然感觉dinic的模 ...
- ACM/ICPC 之 卡卡的矩阵旅行-最小费用最大流(可做模板)(POJ3422)
将每个点拆分成原点A与伪点B,A->B有两条单向路(邻接表实现时需要建立一条反向的空边,并保证环路费用和为0),一条残留容量为1,费用为本身的负值(便于计算最短路),另一条残留容量+∞,费用为0 ...
- hdu 4411 2012杭州赛区网络赛 最小费用最大流 ***
题意: 有 n+1 个城市编号 0..n,有 m 条无向边,在 0 城市有个警察总部,最多可以派出 k 个逮捕队伍,在1..n 每个城市有一个犯罪团伙, 每个逮捕队伍在每个城市可以选 ...
- poj 2195 二分图带权匹配+最小费用最大流
题意:有一个矩阵,某些格有人,某些格有房子,每个人可以上下左右移动,问给每个人进一个房子,所有人需要走的距离之和最小是多少. 貌似以前见过很多这样类似的题,都不会,现在知道是用KM算法做了 KM算法目 ...
- 最小费用最大流 POJ2195-Going Home
网络流相关知识参考: http://www.cnblogs.com/luweiseu/archive/2012/07/14/2591573.html 出处:優YoU http://blog.csdn. ...
- 【进阶——最小费用最大流】hdu 1533 Going Home (费用流)Pacific Northwest 2004
题意: 给一个n*m的矩阵,其中由k个人和k个房子,给每个人匹配一个不同的房子,要求所有人走过的曼哈顿距离之和最短. 输入: 多组输入数据. 每组输入数据第一行是两个整型n, m,表示矩阵的长和宽. ...
- POJ 2516 最小费用最大流
每一种货物都是独立的,分成k次最小费用最大流即可! 1: /** 2: 因为e ==0 所以 pe[v] pe[v]^1 是两条相对应的边 3: E[pe[v]].c -= aug; E[pe[v]^ ...
- Doctor NiGONiGO’s multi-core CPU(最小费用最大流模板)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=693 题意:有一个 k 核的处理器和 n 个工作,全部的工作都须要在一个核上处理一个单位的 ...
随机推荐
- IOS 中常用站位符
CGPoint.CGRect等可以转化为字符串打印出来 如: NSLog(@"-------------%@",NSStringFromCGPoint(point)); ...
- Viewpager实现图片轮播
//-------------主布局文件------------------------------------- <LinearLayout xmlns:android="http: ...
- hdu 4463 Outlets(最小生成树)
Outlets Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submi ...
- cc2530 -----SampleApp.c解析
/************************************************************************************************** ...
- js date相关学习!
var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-???? ...
- java中iofile的路径问题,确定一个未知方法所需要的文件路径
今天遇到一个极其烦躁的问题,一个jar包中的一个方法,要求函数中要求传入一个String类型的参数,用于指示文件所在的路径.但是对于我们来说完全不知道他需要的路径是绝对路径还是相对路径,所以我尝试了很 ...
- STL笔记之【map之添加元素】
//---------------------------------------------------------// 向map中插入元素的方法比较//---------------------- ...
- 第19章 网络通信----TCP程序设计基础
TCP网络程序设计是指利用Socket类编写通信程序.利用TCP协议进行通信的两个应用程序是有主次之分的,一个称为服务器程序,另一个称为客户机程序,两者的功能和编写方法大不一样. 1.InetAddr ...
- JavaBean--JavaBean与表单
SimpleBean.java: package cn.mldn.lxh.demo ; public class SimpleBean { private String name ; private ...
- 安装psutil模块报错&安装python-devel
psutil/_psutil_linux.c:9:20: 错误:Python.h:没有那个文件或目录 In file included from psutil/_psutil_linux.c:19:p ...