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 ...
随机推荐
- ava Double: 四舍五入并设置小数点位数
public static void main(String[] args) { // 1. 先乘后四舍五入, 再除; double d = 62.31060027198647; double d2 ...
- 微信公众平台——基础配置——服务器配置:PHP版
在自己的服务器上新建一个空白php文件,输入以下任一版本的代码,如下: 版本一: <?php $token = "dige1994"; $signature = $_GET[ ...
- jvm学习理解
1.本文是转载别人所写的,因为这个jvm看很多遍老是忘,转载只是备忘和查看方便. 转载地址: https://mp.weixin.qq.com/s/reFDCkUdq1QGGDs_Mnuesg 图中涉 ...
- bzoj 1025: [SCOI2009]游戏【数学+dp】
很容易发现行数就是lcm环长,也就是要求和为n的若干数lcm的个数 有结论若p1^a1+p2^a2+...+pm^am<=n,则ans=p1^a1p2^a2..*pm^am是n的一个可行答案.( ...
- P5106 dkw的lcm
传送门 终于A了--细节真多-- 首先我们发现这是个连乘,而且\(\phi\)是个积性函数,所以我们可以考虑不同的质因子以及它的不同次数的贡献.简单来说就是把每一次的\(\phi(lcm(i_1,i_ ...
- 【POJ - 1458】Common Subsequence(动态规划)
Common Subsequence Descriptions: A subsequence of a given sequence is the given sequence with some e ...
- vs2013问题解决办法—>fatal error LNK1168 如何避免
问题:在使用visial studio 2013运行成功程序,但当修改其中的一段后,即语法,执行后报错 出现error:fatal error LNK1168:无法打开……\xxx.exe进行写入. ...
- javascript---DOM大编程2
编程挑战 现在利用之前我们学过的JavaScript知识,实现选项卡切换的效果. 效果图: 文字素材: 房产: 275万购昌平邻铁三居 总价20万买一居 200万内购五环三居 140万安家东三环 ...
- [Usaco2006 Mar]Mooo 奶牛的歌声
Description Farmer John's N (1 <= N <= 50,000) cows are standing in a very straight row and mo ...
- Spring MVC 结合Velocity视图出现中文乱码的解决方案
编码问题一直是个很令人头疼的事,这几天搭了一个Spring MVC+VTL的web框架,发现中文乱码了,这里记录一种解决乱码的方案. 开发环境为eclipse,首先,检查Window->pref ...