Problem 2261 浪里个浪

链接:http://acm.fzu.edu.cn/problem.php?pid=2261
Accept: 15    Submit: 31
Time Limit: 1500 mSec    Memory Limit : 32768 KBProblem DescriptionTonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划。现在他的手上有一份天朝地图,上面有n个城市,m条交通路径,每条交通路径都是单行道。他已经预先规划好了一些点作为旅游的起点和终点,他想选择其中一个起点和一个终点,并找出从起点到终点的一条路线亲身体验浪的过程。但是他时间有限,所以想选择耗时最小的,你能告诉他最小的耗时是多少吗?Input包含多组测试数据。输入第一行包括两个整数n和m,表示有n个地点,m条可行路径。点的编号为1 - n。接下来m行每行包括三个整数i, j, cost,表示从地点i到地点j需要耗时cost。接下来一行第一个数为S,表示可能的起点数,之后S个数,表示可能的起点。接下来一行第一个数为E,表示可能的终点数,之后E个数,表示可能的终点。0<S, E≤n≤100000,0<m≤100000,0<cost≤100。Output输出他需要的最短耗时。Sample Input4 4
1 3 1
1 4 2
2 3 3
2 4 4
2 1 2
2 3 4Sample Output1Source福州大学第十四届程序设计竞赛_重现赛

题目大意:有n个点,m条边,有s个可能的起点,有m个可能的终点。
问:从任一个起点出发,到任一个终点,时间最短是多少?

思路:普通的求最短路的方法,只能求一个起点到多个终点的最短路(这道题将所有的起点全部遍历一边也能过),所以要从新建立一个点,这个点到所有起点的距离都是0,这样点1到点2的距离就是dp[点2]-dp[点1],求出最短的距离,就行了。

#include<stdio.h>
#include<string.h>
#include<queue>
#define inf 0x3f3f3f3f
#include<algorithm>
using namespace std;int a[100009];//存所有的起点
int xia[100009];//
int dp[100009];
int first[100009];
struct node
{int s,e;int p;int next;
} edge[100009];
int N;void build(int s,int e,int p)
{edge[N].s=s;edge[N].e=e;edge[N].p=p;edge[N].next=first[s];first[s]=N;N++;
}void spfa(int x,int n)
{for(int i=0; i<=n; i++){dp[i]=inf;xia[i]=0;}xia[x]=1;dp[x]=0;queue<int>q;q.push(x);while(!q.empty()){x=q.front();q.pop();xia[x]=0;for(int i=first[x]; i!=-1; i=edge[i].next){if(dp[edge[i].e]>edge[i].p+dp[x]){dp[edge[i].e]=edge[i].p+dp[x];if(xia[edge[i].e]==0){q.push(edge[i].e);xia[edge[i].e]=1;}}}}
}
int main()
{int n,m;while(~scanf("%d%d",&n,&m)){int s,e,q;N=0;memset(first,-1,sizeof(first));for(int i=0;i<m;i++){scanf("%d%d%d",&s,&e,&q);build(s,e,q);}int n_s;scanf("%d",&n_s);for(int i=0;i<n_s;i++)//起点{scanf("%d",&a[i]);build(0,a[i],0);//创建一个新的点}spfa(0,n);int n_e;scanf("%d",&n_e);int f;int max_=inf;for(int i=0;i<n_e;i++)//终点{scanf("%d",&f);for(int j=0;j<n_s;j++){if(dp[f]-dp[a[j]]<max_)max_=dp[f]-dp[a[j]];}}printf("%d\n",max_);}return 0;
}

Problem 2261 浪里个浪(多起点与多终点问题)相关推荐

  1. FZU 2261 浪里个浪

    FZU 2261 浪里个浪 TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划. 现在他的手上有一份天朝地图,上面有n个城市,m条交通路径,每条交 ...

  2. FZU 2261 浪里个浪 (多源最短路)(福州大学第十四届程序设计竞赛)

    浪里个浪 Problem Description TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划. 现在他的手上有一份天朝地图,上面有n个城市 ...

  3. FZU - 2261 浪里个浪 ( 最短路

    浪里个浪 题目描述 TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划. 现在他的手上有一份天朝地图,上面有n个城市,m条交通路径,每条交通路径都 ...

  4. FZU2261 浪里个浪(最短路,spfa)(福州大学第十四届程序设计竞赛)

    题目:  Problem 2261 浪里个浪 Accept: 42    Submit: 108 Time Limit: 1500 mSec    Memory Limit : 32768 KB  P ...

  5. 浪里个浪 FZU - 2261

    TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划. 现在他的手上有一份天朝地图,上面有n个城市,m条交通路径,每条交通路径都是单行道.他已经预先 ...

  6. FZU - 2261 浪里个浪(多源最短路SPFA)

    TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划. 现在他的手上有一份天朝地图,上面有n个城市,m条交通路径,每条交通路径都是单行道.他已经预先 ...

  7. 浪里个浪 FZU - 2261 (多源最短路问题)

    TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划. 现在他的手上有一份天朝地图,上面有n个城市,m条交通路径,每条交通路径都是单行道.他已经预先 ...

  8. 福州大学第十四届程序设计竞赛_重现赛 I - 浪里个浪 (多源最短路)

    TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划. 现在他的手上有一份天朝地图,上面有n个城市,m条交通路径,每条交通路径都是单行道.他已经预先 ...

  9. 浪里个浪:Google 北京刚搬进新办公室 走去瞧瞧!

    文章出处:http://bbs.chongbuluo.com/thread-1866-1-1.html 2016 年 8 月,Google 中国的北京办公室正式搬出科建大厦,挪到了融科资讯中心.8 月 ...

最新文章

  1. MVC模式下My97DatePicker日期控件引用注意事项
  2. HTML CSS JS之间的关系
  3. vb.net中类型转换
  4. dbcp、c3p0、proxool、Bonecp等连接池对比
  5. 定义一个计算字符串有效长度的_一个正方形的小抽屉柜,根据设计草图计算出所需四片木板的长度...
  6. mysql5.1 mysiam_MySQL 数据库清理MyISAM Innodb表(支持MySQL5.1.6以上的版本)
  7. java向Excel文件写入数据
  8. 《例说51单片机(C语言版)(第3版)》一1.7 实时练习
  9. 在Node.js中操作文件系统(一)
  10. 计算机睡眠功能命令,windows睡眠命令怎么使用
  11. 算法题04:分治法:求第K小元素(线性时间选择算法)
  12. win7 计算机打不开搜狗,Win7电脑搜狗输入法不见了如何解决?
  13. Python4班平均成绩统计_空中交通管理学院2017级学生 20182019学年第一学期成绩分析报告...
  14. 微信小程序017音乐播放器系统 php java
  15. Android 系统原生TTS使用
  16. Java实现AD域登录认证
  17. linux USB触屏无响应驱动出现EPIPE错误
  18. PHP语言编程魔方,php魔方方法总结
  19. Dell PowerEdge T140服务器安装系统笔记
  20. 短距离无线通讯-NFC

热门文章

  1. 抖音火爆的早安推送在线版,新功能速递,支持推送时间自定义,添加生日日期计算
  2. Shazam原理分析
  3. 基于自主数字身份的个人数据区块链托管破解征信“断直连”困局
  4. PHPStorm+PHPStudy的PHP开发环境配置
  5. 篮球社交APP开发实现功能
  6. 火影忍者疾风传游戏计算机丢失,火影忍者疾风传游戏pc版
  7. Web前端招聘要求有哪些 怎么成为前端行业人才
  8. 对[我所认识的BIOS]系列 -- CPU的第一条指令 一文扩充(II):从FDF到Bios Rom image
  9. oracle导入导出版本规则,Oracle不同版本间的导入导出命令详解 - wangzhuoyan的专栏 - CSDN博......
  10. linux文件系统数据恢复