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 参考(抄)的晨爷的题解(代码) 对矩形进行 ...
随机推荐
- 不使用C库函数(Sprintf)将void* 指针转换为十六进制字符串
#include <stdio.h> #include <stdint.h> #include <stdlib.h> void hexDump(void *ptr, ...
- 持久化存储与HTTP缓存
本文主要学习一下一些高级的HTTP知识,例如Session LocalStorage Cache-Control Expires ETag 其实主要就是涉及到了持久化存储与缓存的技术 在此之前已经学习 ...
- mongodb批量处理
mongodb支持批量插入. 1.使用Java mongodb api 查看源码com.mongodb.MongoCollectionImpl,有两个方法 @Override public void ...
- 题解 [HNOI2004]宠物收养场
解析 这题似乎是裸的平衡树\(+\)模拟...于是用\(treap\)写了个板子. 看上去,我们似乎要维护两颗树(宠物和顾客), 然而,注意到,同一时间宠物点只有一类人(或物qwq), 所以,只要判断 ...
- [人物存档]【AI少女】【捏脸数据】1222今日份的推荐
AISChaF_20191030183624290.png
- Springboot的resources下资源访问的问题
对于路径问题,是让我一直感到痛苦的事情,首先是因为我的眼高手低,感觉路径这么简单根本没必要去看,但是昨天项目组长的冷嘲热讽让我无地自容:“你竟然连linux和window的路径的区别都不知道,呵呵”. ...
- [Python之路] 使用epoll实现高并发HTTP服务器
什么是epoll 我们在 Python多种方式实现并发的Web Server 的最后使用单进程+单线程+非阻塞+长连接实现了一个可并发处理客户端连接的服务器.他的原理可以用以下的图来描述: 解释: ...
- 循环数组实现FIFO
涉及到数据通信的软件开发,不能回避的一点是,设计一个实用高效率的数据缓冲区,例如fifo.今天在做项目时候,需要缓存CAN总线上的数据,然后再需要的时候读这些数据.下边给出我自己设计的,采用循环数组实 ...
- 项目部署中,tomcat报java.lang.OutOfMemoryError: PermGen space
原因: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader ...
- jQuery属性操作之值操作
值操作是对DOM属性value进行读取和设置操作. 比如html(). text(). val(). 1. html 1. 1 html()获取值 返回值:String 描述:获取集合中第一个匹配元素 ...