有一张图,若干人要从不同的点到同一个中间点,再返回,求总费用最小

中间点到各个点最小费用是普通的最短路

各个点到中间点最小费用其实就是将所有路径反向建边之后中间点到各个点的最小费用,同样用最短路就可以求出了

 #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 最短路的更多相关文章

  1. HDU1535——Invitation Cards(最短路径:SPAF算法+dijkstra算法)

    Invitation Cards DescriptionIn the age of television, not many people attend theater performances. A ...

  2. poj1511/zoj2008 Invitation Cards(最短路模板题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Invitation Cards Time Limit: 5 Seconds    ...

  3. HDU 1535 Invitation Cards (最短路)

    题目链接 Problem Description In the age of television, not many people attend theater performances. Anti ...

  4. hdu1535——Invitation Cards

    Invitation Cards Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  5. POJ1511 Invitation Cards —— 最短路spfa

    题目链接:http://poj.org/problem?id=1511 Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Tota ...

  6. POJ-1511 Invitation Cards( 最短路,spfa )

    题目链接:http://poj.org/problem?id=1511 Description In the age of television, not many people attend the ...

  7. J - Invitation Cards 最短路

    In the age of television, not many people attend theater performances. Antique Comedians of Malidine ...

  8. D - Silver Cow Party J - Invitation Cards 最短路

    http://poj.org/problem?id=3268 题目思路: 直接进行暴力,就是先求出举行party的地方到每一个地方的最短路,然后再求以每一个点为源点跑的最短路. 还有一种方法会快很多, ...

  9. Invitation Cards POJ - 1511 (双向单源最短路)

    In the age of television, not many people attend theater performances. Antique Comedians of Malidine ...

随机推荐

  1. Win10系列:JavaScript获取文件和文件夹列表

    在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolder ...

  2. 随机生成id

    function getRandom(){ return Math.random().toString(36).substring(7);}

  3. Java操作FTP工具类(实例详解)

    这里使用Apache的FTP jar 包 没有使用Java自带的FTPjar包  工具类 package com.zit.ftp; import java.io.File; import java.i ...

  4. 依赖倒置(DIP)、控制反转(IOC)和依赖注入(DI)

    原文: https://blog.csdn.net/briblue/article/details/75093382 写这篇文章的原因是这两天在编写关于 Dagger2 主题的博文时,花了大量的精力来 ...

  5. 7.7 C++基本关联式容器

    参考:http://www.weixueyuan.net/view/6404.html 总结: 基本的关联式容器主要有:set.multiset.map和multimap,这四种容器可以分为两组:ma ...

  6. do while

    do while结构的基本原理和while结构是基本相同的,但是它保证循环体至少被执行一次.因为它是先执行代码,后判断条件,如果条件为真,继续循环.

  7. ThreadPoolExcutor

    先保存一个链接,后续更新 JAVA进阶----ThreadPoolExecutor机制 ExecutorService生命周期 理解ThreadPoolExecutor源码(一)线程池的corePoo ...

  8. codeforces546D(从一个数中拆分素数)

    D. Soldier and Number Game time limit per test 3 seconds memory limit per test 256 megabytes input s ...

  9. 高级数据类型--列表[list]

    List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组,专门用于存储 一串 信息,列表用 [] 定义,数据 之间使用 , 分隔,列表的 索引 从 0 开始. nam ...

  10. phpexcel 的使用

    首先到phpexcel官网上下载最新的phpexcel类,下周解压缩一个classes文件夹,里面包含了PHPExcel.php和PHPExcel的文件夹,这个类文件和文件夹是我们需要的,把class ...