TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划。

现在他的手上有一份天朝地图,上面有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 Input

4 4
1 3 1
1 4 2
2 3 3
2 4 4
2 1 2
2 3 4

Sample Output

1

em 这个题开始就想到了炒鸡源点和炒鸡汇点,结果偷懒不写队列优化T了,看到网上很多用spfa的,还有用网络流的大佬,网络流我还不会,这里附上队列优化迪杰斯特拉的解法

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<vector>
 4 #include<string.h>
 5 #include<queue>
 6 #include<utility>
 7 #define INF 0x3f3f3f3f
 8
 9 using namespace std;
10 typedef pair<int,int> P;
11
12 struct node
13 {
14     int to,w;
15     node(int v,int val):to(v),w(val) {}
16 };
17
18 int n,m;
19 const int maxn = 100007;
20 int vis[maxn];
21 int dist[maxn];
22 vector<node>g[maxn];
23
24 void init()
25 {
26
27     int a,b,c;
28     for(int i=0; i<=n; i++)g[i].clear();
29     for(int i=0; i<m; i++)
30     {
31         scanf("%d%d%d",&a,&b,&c);
32         g[a].push_back(node(b,c));
33     }
34     scanf("%d",&a);
35     for(int i=0; i<a; i++)
36     {
37         scanf("%d",&b);
38         g[0].push_back(node(b,0));
39     }
40     scanf("%d",&a);
41     for(int i=0; i<a; i++)
42     {
43         scanf("%d",&b);
44         g[b].push_back(node(n+1,0));
45     }
46 }
47
48 void dijkstra(int start)
49 {
50     priority_queue<P,vector<P>,greater<P> >que;
51     memset(dist,INF,sizeof(dist));
52     dist[start] = 0;
53     que.push(P(0,start));
54     while(!que.empty())
55     {
56         P p = que.top();
57         que.pop();
58         int v = p.second;
59         if(dist[v]<p.first)continue;
60         for(int i=0; i<g[v].size(); i++)
61         {
62             node e = g[v][i];
63             if(dist[e.to] > dist[v] + e.w)
64             {
65                 dist[e.to] = dist[v] + e.w;
66                 que.push(P(dist[e.to],e.to));
67             }
68         }
69     }
70 }
71
72 int main()
73 {
74     while(~scanf("%d%d",&n,&m))
75     {
76         init();
77         dijkstra(0);
78         printf("%d\n",dist[n+1]);
79     }
80     return 0;
81 }

View Code

转载于:https://www.cnblogs.com/iwannabe/p/9132490.html

浪里个浪 FZU - 2261相关推荐

  1. FZU 2261 浪里个浪

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

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

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

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

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

  4. Problem 2261 浪里个浪(多起点与多终点问题)

    Problem 2261 浪里个浪 链接:http://acm.fzu.edu.cn/problem.php?pid=2261 Accept: 15 Submit: 31 Time Limit: 15 ...

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

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

  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. python traceback安装_Python错误:Traceback (most recent call last):感觉是软件出了问题
  2. 如何在电脑中配置jdk环境变量
  3. 小谈多生成树协议--MSTP
  4. stm32中用到的实时系统_适合STM32的三大嵌入式操作系统。
  5. C++之Lambda表达式
  6. Java 冒泡排序实现及口诀
  7. “Word自动更改后的内容保存到通用文档模板上。是否加载该模板?“的解决办法...
  8. SpringCloud Hystrix的超时时间配置以及监控平台搭建
  9. 怎么设置某个用户生成hdfs文件的权限_管理 HDFS 服务
  10. vscode:四个乱码问题及解决方法
  11. 爱情保卫战 - 爱情保鲜剂 语录收集
  12. 安卓webview开发简介
  13. Learning the Model Update for Siamese Trackers论文解读
  14. 鑫迪自助建站系统1.1版网站源码完整源码
  15. 别踩白块儿游戏代码html,别踩白块儿.html · 知足常乐大哥哥/not-step-on-white-block - Gitee.com...
  16. pyspark学习——统计《少年派的奇幻漂流》(lifeofpi)词频
  17. win10如何删除万能输入法
  18. HyperMesh二次开发教程 - 前言
  19. vivoX30是android5的吗,深度剖析揭秘opporeno5质量和vivox30区别是?选哪个更好?独家揭秘报道...
  20. 小米手机解BL锁时 进入fastboot之后 PC端手机解锁工具一直显示未连接手机

热门文章

  1. 科学计算机二进制算法,计算机是怎么理解二进制的?
  2. 斑能不能彻底去掉_用茶树精油祛痘时,千万不能做这5件事!!!
  3. shouji android输入法,安卓手机主流输入法对比
  4. C++并发编程实战(豆瓣评分5.4)
  5. boost 变量类型转换
  6. 网络名称 转换 网络地址_网络地址转换| 计算机网络
  7. 编写一个程序,实现将存放在AX和DX中的32位数据循环右移二进制数的4位。(DX存放高字节内容,AX存放低字节内容)
  8. mysql怎么消除冗余,mysql剔除冗余数据
  9. 栈应用_将算式转成按运算符优先级分布(代码、分析、汇编)
  10. IIC通信---EEPROM24C02---STMF4