[FZU2261]浪里个浪
2024-08-31 01:30:48
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 ;
}
最新文章
- SQL去除回车符,换行符,空格和水平制表符
- hw 要的是螺丝钉
- iOS&;Node 搭建WebSocketServer实现聊天
- NeHe OpenGL教程 第四十七课:CG顶点脚本
- TypeScript开篇:尝点新鲜和甜头
- 个人翻译的cedec2010基于物理的光照
- shell学习记录002-知识点储备
- 【转】android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注
- C# 刷票程序
- POJ_1631_Bridging_Signals_(动态规划,LIS)
- pyqt QTreeWidget例子学习
- iOS开发之SDWebImage详解
- ElasticSearch 基本概念
- ZooKeeper安装、部署
- iOS-创建自己的日志系统
- Java读取property配置文件
- WORLD 文件格式的保存
- kibana get 查询失效
- sahrepoint 上传到文档库
- MVC常用筛选器Filter
热门文章
- Appium iOS万能的定位方式--Predicate(iOSNsPredicate)
- JS运行在服务器端注意事项
- 03-Mysql数据库----安装与管理
- Ubuntu16.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook 深度学习环境配置
- [Linux] 服务器镜像定时备份解决方案 crontab+rsync+flock
- 父窗体和子窗体的显示,show&;showdialog方法
- 【iOS开发】iOS CGRectGetMaxX/Y 使用
- elmentUI组件怎么绑定原生事件
- DES(Data Encryption Standard)数据加密标准
- 【bzoj2384】[Ceoi2011]Match 特殊匹配条件的KMP+树状数组