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

多源最短路,新建一个节点root,把root向每个起点连一条边权为0的边,跑最短路,最后答案为root到每个终点的最短路的最小值

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int h[],to[],nxt[],cost[],k=;
int d[];
typedef pair<int,int> P;
priority_queue<P,vector<P>,greater<P> >q;
void ins(int u,int v,int c){nxt[++k]=h[u];h[u]=k;to[k]=v;cost[k]=c;}
void dij(int S)
{
memset(d,,sizeof(d));d[S]=;
q.push(P(d[S],S));
while(!q.empty())
{
P p=q.top();q.pop();int u=p.second;
if(d[u]<p.first)continue;
for(int i=h[u];i;i=nxt[i])
{
int v=to[i];
if(d[u]+cost[i]<d[v]){d[v]=d[u]+cost[i];q.push(P(d[v],v));}
}
}
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(h,,sizeof(h));k=;
for(int i=;i<=m;i++)
{
int u,v,c;scanf("%d%d%d",&u,&v,&c);ins(u,v,c);
}
int S;scanf("%d",&S);
for(int i=;i<=S;i++)
{
int u;scanf("%d",&u);ins(n+,u,);
}
dij(n+);
int ans=;
int E;scanf("%d",&E);
for(int i=;i<=E;i++)
{
int v;scanf("%d",&v);ans=min(ans,d[v]);
}
printf("%d\n",ans);
}
return ;
}

最新文章

  1. SQL去除回车符,换行符,空格和水平制表符
  2. hw 要的是螺丝钉
  3. iOS&amp;Node 搭建WebSocketServer实现聊天
  4. NeHe OpenGL教程 第四十七课:CG顶点脚本
  5. TypeScript开篇:尝点新鲜和甜头
  6. 个人翻译的cedec2010基于物理的光照
  7. shell学习记录002-知识点储备
  8. 【转】android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注
  9. C# 刷票程序
  10. POJ_1631_Bridging_Signals_(动态规划,LIS)
  11. pyqt QTreeWidget例子学习
  12. iOS开发之SDWebImage详解
  13. ElasticSearch 基本概念
  14. ZooKeeper安装、部署
  15. iOS-创建自己的日志系统
  16. Java读取property配置文件
  17. WORLD 文件格式的保存
  18. kibana get 查询失效
  19. sahrepoint 上传到文档库
  20. MVC常用筛选器Filter

热门文章

  1. Appium iOS万能的定位方式--Predicate(iOSNsPredicate)
  2. JS运行在服务器端注意事项
  3. 03-Mysql数据库----安装与管理
  4. Ubuntu16.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook 深度学习环境配置
  5. [Linux] 服务器镜像定时备份解决方案 crontab+rsync+flock
  6. 父窗体和子窗体的显示,show&amp;showdialog方法
  7. 【iOS开发】iOS CGRectGetMaxX/Y 使用
  8. elmentUI组件怎么绑定原生事件
  9. DES(Data Encryption Standard)数据加密标准
  10. 【bzoj2384】[Ceoi2011]Match 特殊匹配条件的KMP+树状数组