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 ;
}

[FZU2261]浪里个浪的更多相关文章

  1. FOJ Problem 2261 浪里个浪

                                                                                                        ...

  2. 【fzu-2261】浪里个浪

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

  3. 浪里个浪 FZU - 2261

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

  4. 尖端之作看逐浪-Zoomla!逐浪CMS python版发布

    免费下载:https://www.z01.com/down/3723.shtml Python是跻身于当代IT世界最流行和代码最高效的编程语言之一. 带着对技术的卓越追求.对客户的承诺.对品质的极致追 ...

  5. swift -- 学习记录

    先把疯狂的swift这本书大致看了一遍 2016.7.13 因为实在是太闲,所以决定把公司的应用用swift写一遍 然后顺便看看swift的官方文档 这里有一个官文的中文翻译,感动啊 http://w ...

  6. JS 中 if / if...else...替换方式

    说说烂大街的if/if...else...,程序中用得最多的流程判断语句. 对着曾经满屏的if/if...else...,心想能不能搞点事情,折腾点浪花浪里呀浪. 对顶着"这个需求很简单,怎 ...

  7. iOS 11和xcode9

    最近发现了比较奇怪的问题,就是 ios10.几以前的版本,用xcode9 编写的程序   如果程序写的table是  plain的  ,那么  在  ios10.几及以下版本都会显示成group样式, ...

  8. 2017 Fzu校赛 [Cloned]

    A - Salty Fish 海边躺着一排咸鱼,一些有梦想的咸鱼成功翻身(然而没有什么卵用),一些则是继续当咸鱼.一个善良的渔夫想要帮这些咸鱼翻身,但是渔夫比较懒,所以只会从某只咸鱼开始,往一个方向, ...

  9. 最新消息,CDRX7冰点价再返现,你知道么?

    一年一度的七夕又到来了,这不很多的单身狗朋友们都已经自备好了狗粮,准备在家里宅上一天呢? 开个玩笑今天小编就为各位带来了 一个劲爆大消息... Deng/deng/deng/deng..就是备受万众瞩 ...

随机推荐

  1. Android应用AsyncTask处理机制详解及源码分析

    1 背景 Android异步处理机制一直都是Android的一个核心,也是应用工程师面试的一个知识点.前面我们分析了Handler异步机制原理(不了解的可以阅读我的<Android异步消息处理机 ...

  2. create subnet

    子网相关功能点: 模块 功能 描述 备注 子网 创建子网 创建一个子网   设置子网网段范围   设置子网网关IP/不开启网关   给子网开启/关闭dhcp   设置子网dns   修改子网 修改子网 ...

  3. Linux下的命令行

    一.文件传输(两种方式) 1. 使用CRT传输 1. 一定要修改编码为UTF-8类型 1. 按住alt + p 切换成传输文件的窗口,然后拖拽文件进来即可 2. 使用类似xftp这种软件传输 这种软件 ...

  4. Hyper-v创建检查点(VM的快照功能)

    一. 问题描述 在Hyper的默认设置中没有创建检查点的功能,是因为他启用的并不是标准设置.设置检查点时会 二. 解决方法 再设置检查点就没问题了

  5. 线段树——hdu1166敌兵布阵

    一.题目回顾 题目链接:敌兵布阵 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个 ...

  6. Postmortem Report 第一轮迭代事后分析报告

    一.设想和目标 1.1 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件<BlueZ>是一款全新动作类塔防游戏.与市面上已经存在的塔防游戏不同 ...

  7. chromium源码阅读

    linux下chromium的入口函数在文件:src/chrome/app/chrome_exe_main_aura.cc 中 int main(int argc, const char** argv ...

  8. [洛谷P3382]【模板】三分法

    题目大意:给出一个$N$次函数,保证在范围$[l,r]$内存在一点x,使得$[l,x]$上单调增,$[x,r]$上单调减.试求出$x$的值. 题解:求导,就变成了求零点,二分答案即可 卡点:无 C++ ...

  9. Jsp上传组件Smartupload介绍

    <form action="UploadServlet" enctype="multipart/form-data" method="post& ...

  10. 【bzoj2038】[国家集训队2010]小Z的袜子 莫队

    莫队:就是一坨软软的有弹性的东西Duang~Duang~Duang~ 为了防止以左端点为第一关键字以右端点为第二关键字使右端点弹来弹去,所以让左端点所在块为关键字得到O(n1.5)的时间效率,至于分块 ...