hdu1535 Invitation Cards 最短路
有一张图,若干人要从不同的点到同一个中间点,再返回,求总费用最小
中间点到各个点最小费用是普通的最短路
各个点到中间点最小费用其实就是将所有路径反向建边之后中间点到各个点的最小费用,同样用最短路就可以求出了
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
typedef pair<int,int> pii;
typedef long long ll;
const int MAXM=;
struct cmp{
bool operator ()(pii a,pii b){
return a.first>b.first;
}
}; int head1[MAXM+],point1[MAXM+],val1[MAXM+],next1[MAXM+],size1;
int head2[MAXM+],point2[MAXM+],val2[MAXM+],next2[MAXM+],size2;
int n,m;
int dist1[MAXM+],dist2[MAXM+]; void add1(int a,int b,int v){
point1[size1]=b;
val1[size1]=v;
next1[size1]=head1[a];
head1[a]=size1++;
} void add2(int a,int b,int v){
point2[size2]=b;
val2[size2]=v;
next2[size2]=head2[a];
head2[a]=size2++;
} void dij(int s){
int i;
priority_queue<pii,vector<pii>,cmp>q;
memset(dist1,0x3f,sizeof(dist1));
memset(dist2,0x3f,sizeof(dist2));
dist1[s]=dist2[s]=;
q.push(make_pair(dist1[s],s));
while(!q.empty()){
pii u=q.top();
q.pop();
if(u.first>dist1[u.second])continue;
for(i=head1[u.second];~i;i=next1[i]){
int j=point1[i];
if(dist1[j]>dist1[u.second]+val1[i]){
dist1[j]=dist1[u.second]+val1[i];
q.push(make_pair(dist1[j],j));
}
}
}
while(!q.empty())q.pop();
q.push(make_pair(dist2[s],s));
while(!q.empty()){
pii u=q.top();
q.pop();
if(u.first>dist2[u.second])continue;
for(i=head2[u.second];~i;i=next2[i]){
int j=point2[i];
if(dist2[j]>dist2[u.second]+val2[i]){
dist2[j]=dist2[u.second]+val2[i];
q.push(make_pair(dist2[j],j));
}
}
}
ll ans=;
for(i=;i<=n;i++){
ans+=dist1[i];
ans+=dist2[i];
}
printf("%I64d\n",ans);
} int main(){
int t;
scanf("%d",&t);
for(int q=;q<=t;q++){
scanf("%d%d",&n,&m);
int i,a,b,v;
memset(head1,-,sizeof(head1));
size1=;
memset(head2,-,sizeof(head2));
size2=;
for(i=;i<=m;i++){
scanf("%d%d%d",&a,&b,&v);
add1(a,b,v);
add2(b,a,v);
}
dij();
} return ;
}
hdu1535 Invitation Cards 最短路的更多相关文章
- HDU1535——Invitation Cards(最短路径:SPAF算法+dijkstra算法)
Invitation Cards DescriptionIn the age of television, not many people attend theater performances. A ...
- poj1511/zoj2008 Invitation Cards(最短路模板题)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Invitation Cards Time Limit: 5 Seconds ...
- HDU 1535 Invitation Cards (最短路)
题目链接 Problem Description In the age of television, not many people attend theater performances. Anti ...
- hdu1535——Invitation Cards
Invitation Cards Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- POJ1511 Invitation Cards —— 最短路spfa
题目链接:http://poj.org/problem?id=1511 Invitation Cards Time Limit: 8000MS Memory Limit: 262144K Tota ...
- POJ-1511 Invitation Cards( 最短路,spfa )
题目链接:http://poj.org/problem?id=1511 Description In the age of television, not many people attend the ...
- J - Invitation Cards 最短路
In the age of television, not many people attend theater performances. Antique Comedians of Malidine ...
- D - Silver Cow Party J - Invitation Cards 最短路
http://poj.org/problem?id=3268 题目思路: 直接进行暴力,就是先求出举行party的地方到每一个地方的最短路,然后再求以每一个点为源点跑的最短路. 还有一种方法会快很多, ...
- Invitation Cards POJ - 1511 (双向单源最短路)
In the age of television, not many people attend theater performances. Antique Comedians of Malidine ...
随机推荐
- loj6277
题解: 树状数组模板提 代码: #include<bits/stdc++.h> using namespace std; ; int num[N],n,a[N],l,r,c,opt; vo ...
- C/C++知识补充(2) C/C++操作符/运算符的优先级 & 结合性
, 逗号操作符 for( i = 0, j = 0; i < 10; i++, j++ ) ... 从左到右 Precedence Operator Description Example ...
- hibernate查询oracle数据库表报错SQL state [null]; error code [17027]; 流已被关闭; nested exception is java.sql.SQLException: 流已被关闭
把表字段类型 long 修改为 number类型即可
- SQL-31 获取select * from employees对应的执行计划
题目描述 获取select * from employees对应的执行计划 explain select * from employees explain 用于获得表的所有细节
- 1.Python爬虫入门一之综述
要学习Python爬虫,我们要学习的共有以下几点: Python基础知识 Python中urllib和urllib2库的用法 Python正则表达式 Python爬虫框架Scrapy Python爬虫 ...
- js继承中,原型属性的继承探究
最近研究了js的继承,看了幻天芒的文章http://www.cnblogs.com/humin/p/4556820.html#3947420,明白了最好是使用apply或call方法来实现继承. 已知 ...
- react 学习笔记 npm 命令
第一步: cnpm install --save react react-dom babelify babel-preset-react 第二步: 安装es2015 cnpm install babe ...
- kbmMW基于硬件生成随机数
按作者的说法,Delphi提供的生成随机数不是真正随机的,因为他是根据种子计算的,即种子+算法生成的随机数,如果被人知道原始种子值和算法的调用次数,则可以重现随机数,因此在安全领域,这是不安全的.同时 ...
- QueryString中的加号变成空格解决方法
通过Request.QueryString["CheckItem"]的方式调用值的时候,数值中的加号“+”会转换为空格“ ” 例如传输“ABC+EFG”,就会取到“ABC EFG” ...
- 【Python】xml遍历练习
<?xml version="1.0" encoding="utf-8" ?> <!--this is a test about xml. ...