UOJ#494K点最短路
#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
#define N 100007
#define Q 100000000007
using namespace std;
int n, m, k, s, t, spe[15], tot, ls[N], cnt;
long long ans, dis[N], d[15][15];
bool b[N], v[40];
queue<int> q; struct edge{
int to, next, w;
}e[N]; inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-'){
w=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
} 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,0,sizeof(b));
for(int i=1;i<=n;i++){
dis[i]=Q;
}
dis[x]=0;
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]=1;
}
}
}
b[now]=0;
}
cnt++;
for(int i=1;i<=k+1;i++){
if(cnt!=i){
d[cnt][i]=dis[spe[i]];
}
}
d[cnt][k+2]=dis[t];
} void dfs(int dep, long long sum, int dc){
if(sum+d[dc][k+2]>ans){
return;
}
if(dep>=k+1){
if(sum+d[dc][k+2]<ans){
ans=sum+d[dc][k+2];
}
return;
}
for(int i=2;i<=k+1;i++){
if(!v[i]){
v[i]=1;
dfs(dep+1,sum+d[dc][i],i);
v[i]=0;
}
}
} int main(){
n=read();
m=read();
k=read();
s=read();
t=read();
for(int i=1;i<=m;i++){
int x, y, z;
x=read();
y=read();
z=read();
add(x,y,z);
}
for(int i=2;i<=k+1;i++){
spe[i]=read();
}
spe[1]=s;
for(int i=1;i<=k+1;i++){
spfa(spe[i]);
}
ans=Q;
dfs(1,0,s);
if (ans<Q){
printf("%lld",ans);
}
else{
printf("-1");
}
}
UOJ#494K点最短路的更多相关文章
- BZOJ4456/UOJ#184[Zjoi2016]旅行者 分治 最短路
原文链接http://www.cnblogs.com/zhouzhendong/p/8682133.html 题目传送门 - BZOJ4456 题目传送门 - UOJ#184 题意 $n\times ...
- 最短路 || UOJ 19 寻找道路
UOJ j19 寻找道路 在有向图G中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到终点的最短路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直接或间接与终点连通. * ...
- UOJ #277 BZOJ 4739 定向越野 (计算几何、最短路)
手动博客搬家: 本文发表于20181208 14:39:01, 原地址https://blog.csdn.net/suncongbo/article/details/84891710 哇它居然显示出图 ...
- 【UOJ#32】【UR #2】跳蚤公路(最短路)
[UOJ#32][UR #2]跳蚤公路(最短路) 题面 UOJ 题解 不难发现要求的就是是否存在负环.也就是我们只需要找到所有的负的简单环,很容易就可以想到维护路径上和\(x\)相关的内容,即维护一下 ...
- 【UOJ #244】【UER #7】短路
http://uoj.ac/contest/35/problem/244 对其他人来说好简单的一道题,我当时却不会做TWT 注定滚粗啊 题解很好的~ #include<cstdio> #i ...
- uoj#244. 【UER #7】短路
题目 orz myy 这个矩形对称的性质非常优美,所以我们只需要考虑一个\(\frac{1}{4}\)的矩阵,即一个倒三角形 现在我们要求的是从\((1,1)\)到三角形对边上每个点的最短路,不难发现 ...
- UOJ#53. 【UR #4】追击圣诞老人 树链剖分 k短路
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ53.html 题意 给定一棵有 n 个节点的树. 每一个点有一个权值. 对于每一个 $i$ 给定三个参数 ...
- 【uoj#244】[UER #7]短路 CDQ分治+斜率优化dp
题目描述 给出 $(2n+1)\times (2n+1)$ 个点,点 $(i,j)$ 的权值为 $a[max(|i-n-1|,|j-n-1|)]$ ,找一条从 $(1,1)$ 走到 $(2n+1,2n ...
- 【BZOJ 4456】【UOJ #184】【ZJOI 2016】旅行者
http://www.lydsy.com/JudgeOnline/problem.php?id=4456 http://uoj.ac/problem/184 参考(抄)的晨爷的题解(代码) 对矩形进行 ...
随机推荐
- Html中使用Cookie取值赋值
//设置Cookie function setCookie(name, value) { var Days = 1; var exp = new Date(); exp.setTime(exp.get ...
- VUE-文本-事件-属性指令
一.Vue文本指令 文本指令: 1.{{ }} 2.v-text:不能解析html语法的文本,会原样输出 3.v-html:能解析html语法的文本 4.v-once:处理的标签的内容只能被解析一次 ...
- hdu 6076 Security Check
题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6076 2017 Multi-University Training Contest - Team 4 ...
- [Python之路] 多种方式实现并发Web Server
下面我们使用Python来实现并发的Web Server,其中采用了多进程.多线程.协程.单进程单线程非阻塞的方式. 一.使用子进程来实现并发Web Server 参照 https://www.cnb ...
- web文件系统
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所 ...
- spark实现smote近邻采样
一.smote相关理论 (1). SMOTE是一种对普通过采样(oversampling)的一个改良.普通的过采样会使得训练集中有很多重复的样本. SMOTE的全称是Synthetic Minorit ...
- [BZOJ2730]:[HNOI2012]矿场搭建(塔尖)
题目传送门 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个 ...
- 「UVA12293」 Box Game
题目链接 戳我 \(Solution\) 这道题第一眼看样例,猜了个结论偶数\(Alice\)赢,否则\(Bob\)赢,打了一发,交了上去果不其然的\(wa\)了,第二次猜\(2\)的幂次方\(Ali ...
- 0.2 IDEA配置
一.IDEA配置maven 在启动配置设置清理方式:clean jetty:run maven版本以及本地setting和repository JRE版本以及编码格式:-Dfile.encoding= ...
- mysql5.7以上基本配置
MySQL表名区分大小写设置 关闭MySQL服务 在服务运行目录找到my.ini或者my.cnf文件 find / -name my.cnf 打开文件,找到[mysqld]在下面增加一行 lower_ ...