P5304 [GXOI/GZOI2019]旅行者(最短路/乱搞)
Orz自己想出神仙正解的sxy
描述略
直接把所有起点推进去跑dijkstra...
并且染色,就是记录到这个点的最短路是由哪个起点引导出来的
然后再把所有边反指跑一次...
之后枚举每一条边两边的点不同色就可以更新答案
这个可能少有的代码比说得清楚...
#include<cstdio>
#include<queue>
#include<algorithm>
using std::min;
using std::priority_queue;
typedef long long lint;
,M=;
template<typename tp>inline void read(tp &kk)
{
tp ret=,f=;char ch=getchar();
;ch=getchar();}
+ch-';ch=getchar();}
kk=ret*f;
}
int n,m,k;
struct sumireko{int to,ne;lint v;}e[M];
int he[N],ecnt;
void addline(int f,int t,lint v)
{
if(f==t) return;
e[++ecnt].to=t;
e[ecnt].ne=he[f];
e[ecnt].v=v;
he[f]=ecnt;
}
int X[M],Y[M],l[N];lint V[M];
lint d[][N];][N];
struct shino{
lint di;int id;
shino(){}
shino(int ii,lint dd){id=ii,di=dd;}
bool friend operator < (shino a,shino b){return a.di>b.di;}
}g;
priority_queue<shino>q;
bool vv[N];
void dijkstra(lint *dis,int *c)
{
;i<=n;i++) dis[i]=0x3f3f3f3f3f3f3f3f;
;i<=k;i++) dis[l[i]]=,c[l[i]]=l[i],q.push(shino(l[i],));
while(!q.empty())
{
g=q.top();
q.pop();
int x=g.id;
vv[x]=;
for(int i=he[x],t;i;i=e[i].ne)
{
t=e[i].to;
if(vv[t]) continue;
if(dis[t]>dis[x]+e[i].v)
{
dis[t]=dis[x]+e[i].v;
c[t]=c[x];
q.push(shino(t,dis[t]));
}
}
}
}
;i<=n;i++) he[i]=,vv[i]=;ecnt=;}
int xi,yi,vi,T;
int main()
{
read(T);
while(T--)
{
read(n),read(m),read(k);
;i<=m;i++) read(X[i]),read(Y[i]),read(V[i]),addline(X[i],Y[i],V[i]);
;i<=k;i++) read(l[i]);
dijkstra(d[],fa[]);
clr();
;i<=m;i++) addline(Y[i],X[i],V[i]);
dijkstra(d[],fa[]);
lint ans=0x3f3f3f3f3f3f3f3f;
;i<=m;i++)
{
xi=X[i],yi=Y[i],vi=V[i];
][xi]&&fa[][yi]&&(fa[][xi]^fa[][yi]))
{
ans=min(ans,d[][xi]+vi+d[][yi]);
}
}
printf("%lld\n",ans);
clr();
}
;
}
哭唧唧
P5304 [GXOI/GZOI2019]旅行者(最短路/乱搞)的更多相关文章
- P5304 [GXOI/GZOI2019]旅行者
题目地址:P5304 [GXOI/GZOI2019]旅行者 这里是官方题解 一个图 \(n\) 点 \(m\) 条边,里面有 \(k\) 个特殊点,问这 \(k\) 个点之间两两最短路的最小值是多少? ...
- 洛谷 P5304 [GXOI/GZOI2019]旅行者(最短路)
洛谷:传送门 bzoj:传送门 参考资料: [1]:https://xht37.blog.luogu.org/p5304-gxoigzoi2019-lv-xing-zhe [2]:http://www ...
- luogu P5304 [GXOI/GZOI2019]旅行者
传送门 所以这个\(5s\)是SMG 暴力是枚举每一个点跑最短路,然后有一个很拿衣服幼稚的想法,就是把所有给出的关键点当出发点,都丢到队列里,求最短路的时候如果当前点\(x\)某个相邻的点\(y\)是 ...
- 【题解】Luogu P5304 [GXOI/GZOI2019]旅行者
原题传送门 题意:给你k个点,让你求两两最短路之间的最小值 我们考虑二进制拆分,使得每两个点都有机会分在不同的组\((A:0,B:1)\)中,从源点\(S\)向\(A/B\)中的点连边权为0的边,从\ ...
- [洛谷P5304][GXOI/GZOI2019]旅行者
题目大意: 有一张 \(n(n\leqslant10^5)\) 个点 \(m(m\leqslant5\times10^5)\) 条边的有向有正权图,有$k(2\leqslant k\leqslant ...
- 【BZOJ5506】[GXOI/GZOI2019]旅行者(最短路)
[BZOJ5506][GXOI/GZOI2019]旅行者(最短路) 题面 BZOJ 洛谷 题解 正着做一遍\(dij\)求出最短路径以及从谁转移过来的,反过来做一遍,如果两个点不由同一个点转移过来就更 ...
- [LOJ3087][GXOI/GZOI2019]旅行者——堆优化dijkstra
题目链接: [GXOI/GZOI2019]旅行者 我们考虑每条边的贡献,对每个点求出能到达它的最近的感兴趣的城市(设为$f[i]$,最短距离设为$a[i]$)和它能到达的离它最近的感兴趣的城市(设为$ ...
- [GXOI/GZOI2019]旅行者 (最短路)
题意 给定一个有向图,其中一些顶点为关键点.求这些关键点两两之间最小距离. 题解 考试时没怎么想写了50分暴力走了.以为是什么强连通分量的解法,结果就是个最短路.直接从关键点跑一次最短路dis[0], ...
- BZOJ5506 GXOI/GZOI2019旅行者(最短路)
本以为是个二进制分组傻逼题https://www.cnblogs.com/Gloid/p/9545753.html,实际上有神仙的一个log做法https://www.cnblogs.com/asul ...
随机推荐
- 关于ArcGis for javascrept查询ArcGis server图层信息的方式
方式一: queryTask方式: 该方式用于单个图层的条件查询(不能跨图层查询) 1. 创建query对象 query = new esri.tasks.Query(); 2. 给query对象设置 ...
- E20180218-hm-xa
更新: 2019/02/19 原来忘记分类,把此博文归入单词类 vocabulary n. (某一语言的) 词汇; (尤指外语教科书中附有释义的) 词汇表; grammar n. 语法; 语法书; ...
- 徐州联赛选拔赛 - 计算IP地址值
题目链接 思路:这是一道非常简单的题目,直接用公式计算就好了.对于IP地址a.b.c.d,转换为十进制数就是(a<<24)|(b<<16)|(c<<8)|d.唯一要 ...
- centos6.5 系统-搭建lamp(php7)环境--(yum在线安装)
1.查看当前服务器的版本 #方法1 cat /etc/redhat-release #方法2 rpm -q centos-release 2.安装apache #一键安装apache yum inst ...
- Android Studio编写运行测试纯java代码可带main()函数
问题 小伙伴们在做安卓项目的时候,是不是有时候会忘记某些api的使用方法,不太确定他们的结果是怎样的,需要写一些测试代码,验证看看我们的写法是否正确.刚开始的时候我是在页面上写一个Button,添加点 ...
- _bzoj1003 [ZJOI2006]物流运输【预处理】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1003 预处理出第i天到第j天走一条航线时的最短路. #include <cstdio& ...
- 洛谷 P3804 【模板】后缀自动机
来一份模板 #include<cstdio> #include<algorithm> #include<cstring> #include<queue> ...
- CF916C Jamie and Interesting Graph
思路:构造 实现: #include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n ...
- 501在全志r16平台tinav3.0系统下调通pwm1的10KHZ波形
501在全志r16平台tinav3.0系统下调通pwm1的10KHZ波形 2018/10/19 19:52 版本:V1.0 开发板:SC3817R SDK:tina v3.0 1.01原始编译全志r1 ...
- myeclipse 跟踪struts 源码失败
解决办法: 找到工程jar包所在的位置,点击右键:properties 点击external folder 找到 这个包下的src文件夹 导入之后, 源码会变色