JZOJ 3470. 【NOIP2013模拟联考8】最短路(path)
470. 【NOIP2013模拟联考8】最短路(path) (Standard IO)
Description
Input
接下来m行每行3个整数x、y、z,表示有一条从x到y的长为z的有向边。
接下来k行每行一个整数表示标记点编号。
Output
Sample Input
3 3 2 1 1
1 2 1
2 3 1
3 1 1
2
3
Sample Output
3
【样例解释】
路径为1->2->3->1。
Data Constraint
50%的数据n<=1000。
另有20%的数据k=0。
100%的数据n<=50000,m<=100000,0<=k<=10,1<=z<=5000。
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
#define N 100007
#define largest 100000000007
using namespace std;
int n, m, k, s, t, spe[], tot, ls[N], cnt;
long long ans, dis[N], d[][];
bool b[N], v[];
queue<int> q; struct edge
{
int to, next, w;
}e[N]; void add(int x, int y, int z)
{
e[++tot].to = y;
e[tot].w = z;
e[tot].next = ls[x];
ls[x] = tot;
} void spfa(int x)
{
memset(b, , sizeof(b));
for (int i = ; i <= n; i++)
dis[i] = largest;
dis[x] = ;
q.push(x);
while (!q.empty())
{
int now = q.front();
q.pop();
for (int i = ls[now]; i; i = e[i].next)
{
if (dis[now] + e[i].w < dis[e[i].to])
{
dis[e[i].to] = dis[now] + e[i].w;
if (!b[e[i].to])
{
q.push(e[i].to);
b[e[i].to] = ;
}
}
}
b[now] = ;
}
cnt++;
for (int i = ; i <= k + ; i++)
if (cnt != i) d[cnt][i] = dis[spe[i]];
d[cnt][k + ] = dis[t];
} void dfs(int dep, long long sum, int dc)
{
if (sum + d[dc][k + ] > ans) return;
if (dep >= k + )
{
if (sum + d[dc][k + ] < ans) ans = sum + d[dc][k + ];
return;
}
for (int i = ; i <= k + ; i++)
if (!v[i])
{
v[i] = ;
dfs(dep + , sum + d[dc][i], i);
v[i] = ;
}
} int main()
{
scanf("%d%d%d%d%d", &n, &m, &k, &s, &t);
for (int i = ; i <= m; i++)
{
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
add(x, y, z);
}
for (int i = ; i <= k + ; i++)
scanf("%d", &spe[i]);
spe[] = s;
for (int i = ; i <= k + ; i++)
spfa(spe[i]);
ans = largest;
dfs(, , s);
if (ans < largest) printf("%lld", ans);
else printf("-1");
}
JZOJ 3470. 【NOIP2013模拟联考8】最短路(path)的更多相关文章
- JZOJ【NOIP2013模拟联考14】隐藏指令
JZOJ[NOIP2013模拟联考14]隐藏指令 题目 Description 在d维欧几里得空间中,指令是一个长度为2N的串.串的每一个元素为d个正交基的方向及反方向之一.例如,d = 1时(数轴) ...
- JZOJ 3493. 【NOIP2013模拟联考13】三角形
3493. [NOIP2013模拟联考13]三角形(triangle) (File IO): input:triangle.in output:triangle.out Time Limits: 10 ...
- JZOJ 3487. 【NOIP2013模拟联考11】剑与魔法(dragons)
3487. [NOIP2013模拟联考11]剑与魔法(dragons) (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB De ...
- JZOJ 3463. 【NOIP2013模拟联考5】军训
3463. [NOIP2013模拟联考5]军训(training) (Standard IO) Time Limits: 2000 ms Memory Limits: 262144 KB Deta ...
- JZOJ 3462. 【NOIP2013模拟联考5】休息(rest)
3462. [NOIP2013模拟联考5]休息(rest) (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Detailed ...
- JZOJ 3461. 【NOIP2013模拟联考5】小麦亩产一千八(kela)
3461. [NOIP2013模拟联考5]小麦亩产一千八(kela) (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Det ...
- 【NOIP2013模拟联考7】OSU
[NOIP2013模拟联考7]OSU 描述 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分, ...
- [jzoj]3468.【NOIP2013模拟联考7】OSU!(osu)
Link https://jzoj.net/senior/#main/show/3468 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: ...
- [jzoj]3456.【NOIP2013模拟联考3】恭介的法则(rule)
Link https://jzoj.net/senior/#main/show/3456 Description 终于,在众亲们的奋斗下,最终boss 恭介被关进了库特设计的密室.正当她们松了一口气时 ...
随机推荐
- shell 文件测试 蛮全的
文件状态测试 -b filename : 当filename 存在并且是块文件时返回真(返回0)-c filename : 当filename 存在并且是字符文件时返回真-d pathname : 当 ...
- Java开发笔记(九十八)利用Callable启动线程
前面介绍了如何利用Runnable接口构建线程任务,该方式确实方便了线程代码的复用与共享,然而Runnable不像公共方法那样有返回值,也就无法将线程代码的处理结果传给外部,造成外部既不知晓该线程是否 ...
- java 千分位的添加和去除
转至:http://blog.sina.com.cn/s/blog_8f99a1640102v1xh.html 将一个数字转换为有千分位的格式: NumberFormat numberFormat1 ...
- 卸载VS2013 2015
我有两个VS,特别讨厌,每当使用window程序删除时候,就出现 停止工作! 然后从知乎上发现了这个 https://github.com/Microsoft/VisualStudioUninstal ...
- 合理设置apache的最大连接数
手头有一个网站在线人数增多,访问时很慢.初步认为是服务器资源不足了,但经反复测试,一旦连接上,不断点击同一个页面上不同的链接,都能迅速打开,这种现象就是说明apache最大连接数已经满了,新的访客只能 ...
- echo -e的用法
root@bt:~# echo -e "HEAD /HTTP/1.0\n\n"HEAD /HTTP/1.0 root@bt:~# echo -e "HEAD /HTTP/ ...
- touch事件总结
$("body").on("touchstart", function(e) { e.preventDefault(); startX = e.original ...
- 红象云腾CRH 一键部署大数据平台
平台: arm 类型: ARM 模板 软件包: azkaban hadoop 2.6 hbase hive kafka spark zeppelin azkaban basic software bi ...
- Hyper-V 2016 配置管理系列(部署篇)
Hyper主机前提准备以后,我们开始Hyper-V Cluster 群集配置 准备验证Cluster 群集 : 1)打开群集管理器,点击"validate Configuration&quo ...
- jq动态增加的button标签click回调失效的问题,即动态增加的button标签绑定事件$("button.class").click(function)无效
对于新增加的页面元素,改变了页面结构,如果是使用老办法$("button.class").click(function)去监听新的button标签事件,会失效. 笔者的应用是文字的 ...