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. 敏捷开发的艺术读书笔记
  2. Mobile 拨打电话 发送短信
  3. OpenGL程序演示
  4. 电脑桌面的东西突然不显示了
  5. OpenResty 概要及原理科普
  6. python requests返回值为200 但是text无内容_爬取高清无版权美图
  7. c++用一级运算比较大小_1.1.2 python基本数据类型与运算符
  8. Java并发常用方法 sleep 和 wait
  9. 分享一个用Axure写的PRD文档
  10. 如何修改网页中的文本内容改成自己希望的数值?
  11. Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are解决方法
  12. concat特征融合_如何理解concat和add的方式融合特征
  13. VMware Workstation 備份與恢復虛擬機
  14. JavaWeb文件上传(1)--基础
  15. JAVA--多线程管理
  16. Unity3D自带案例AngryBots分析(二)——人物动作控制逻辑
  17. mac下 iterm+Zsh+Oh My Zsh+tmux 配置方案
  18. Efficient Dense Frontier Detection for 2D Graph SLAM Based on Occupancy Grid Submaps
  19. android 代码控制TextView的字体加粗
  20. 4款小众实用的手机APP,全是安卓手机的黑科技软件!

热门文章

  1. 从键盘输入直角三角形两条直角边的长度,求斜边的长度和三角形的面积,计算结果保留两位小数。
  2. 怎么把计算机中更改你的视图,如何修改电脑中文件或文件夹显示的详细信息选项...
  3. IPFS 服务的Python API参考
  4. 黑马程序员_配置环境变量
  5. python工程师工作总结_工程师的第一份工作小结
  6. C# 打印机使用PrintDialog、PrintTicket、PrintQueue
  7. c语输入单引号_c语言单引号的用法指导
  8. Android RxJava操作符的学习---过滤操作符----联想搜索优化
  9. 用西班牙语写一篇文章,讨论如何科学地在线教中国的小朋友学习西班牙语
  10. 指令大全(win+r)