最短路
文章平均质量分 62
最短路算法
李峻枫
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 40 (Rated for Div. 2) D. Fight Against Traffic
题目大意给出一个nnn个点,mmm条边的无向图,无重边,且边权都为1。并指定起点sss,和终点ttt。问有多少种增加一条边(不能产生重边)的方案,使得从sss到ttt的最短路不会发生改变。时间限制1s数据范围n,m≤1000n,m\le 1000n,m≤1000题解因为边权都为1,所以直接BFS即可求出最短路。由于nnn非常小,于是可以直接枚举增加哪一条边。但是如果每一次都BFS一边,那么总的时间复杂度就是O(n3)O(n^3)O(n3)并不是能接受的。这时候,就要想办法把已知最短路原创 2021-07-20 23:32:48 · 125 阅读 · 0 评论 -
JZOJ5959. 【NOIP2018模拟11.8A组】铁路运输
题解虽然他有很多边,但是不少边都没有存在意义。因为我们只关心最短路,所以如果一条边没有构成最短路,那么无论他存在与否,都对最短路没有任何影响。根据构成最短路边,造出一个最短路图,这个图是一个有向无环图。考虑一个点什么时候到1号点的最短路改变,显然是它的入度变为了0,当它不再与1连通,那么它连出去的边也就不是构成最短路的边了,也应该删去。思考这个过程,是不是很像拓扑序呢。c...原创 2018-11-08 15:58:45 · 226 阅读 · 0 评论 -
JZOJ5868. 【NOIP2018模拟9.13】寻梦
题目大意给出n,k,询问n是否可以用k的约数家和的形式表示。题解很显然,只有k的质因子是有用的,分类讨论,如果只有一个质因子,那么就直接取模。如果只有两个质因子,那么就扩展欧几里得。如果超过三个质因子,那么最小的一个质因子就一定小于10510^5105,只有就可以用最短路来解决。code#pragma GCC optimize(2)#pragma GCC optimize(...原创 2018-09-18 22:14:52 · 274 阅读 · 0 评论 -
JZOJ5864. 【NOIP2018模拟9.11】很多序列
题解观察数据范围,就发现x1x1x_1很小,而其他很大,于是就可以根据这里来想。 将其他数换成ax1+bax1+bax_1+b的形式。 可以知道只有出现了连续x1x1x_1个数在序列里面, 那么最大的数就是在这连续x1x1x_1的数前面一个数。 设fifif_i表示,用x2,x3,...,xnx2,x3,...,xnx_2,x_3,...,x_n来组成的数,在%x1x1x_1之...原创 2018-09-12 22:26:20 · 327 阅读 · 0 评论 -
JZOJ4722. 【NOIP2016提高A组模拟8.21】跳楼机
DescriptionDJL为了避免成为一只咸鱼,来找srwudi学习压代码的技巧。 Srwudi的家是一幢h层的摩天大楼。由于前来学习的蒟蒻越来越多,srwudi改造了一个跳楼机,使得访客可以更方便的上楼。 经过改造,srwudi的跳楼机可以采用以下四种方式移动: 1、向上移动x层; 2、向上移动y层; 3、向上移动z层; 4、回到第一层。 一个月黑风高的大中午,DJL来到了s...原创 2018-08-22 16:28:44 · 376 阅读 · 1 评论 -
JZOJ5806. 【2018.08.12提高A组模拟】 简单的操作
Description从前有个包含n个点,m条边,无自环和重边的无向图。 对于两个没有直接连边的点u;v,你可以将它们合并。具体来说,你可以删除u;v及所有以它们作为端点的边,然后加入一个新点x,将它与所有在原图中与u或v有直接连边的点连边。 你需要判断是否能通过若干次合并操作使得原图成为一条链,如果能,你还需要求出这条链的最大长度题解先判断无解的情况, 很显然一个三元环是无解的...原创 2018-08-13 21:52:20 · 360 阅读 · 0 评论 -
5818. 【NOIP提高A组模拟2018.8.15】 做运动
Description一天,Y 君在测量体重的时候惊讶的发现,由于常年坐在电脑前认真学习,她的体重有了突 飞猛进的增长。 幸好 Y 君现在退役了,她有大量的时间来做运动,她决定每天从教学楼跑到食堂来减肥。 Y 君将学校中的所有地点编号为 1 到 n,其中她的教学楼被编号为 S,她的食堂被编号为 T, 学校中有 m 条连接两个点的双向道路,保证从任意一个点可以通过道路到达学校中的所有点。 ...原创 2018-08-18 11:52:38 · 311 阅读 · 0 评论 -
JZOJ5650. 【NOI2018模拟4.13】公交旅行
题目 题目大意就是给出一个n个点的有向图, 每条边的边权是随时间的变化而变化。 求从1出发的,到所有点的最短路。题解对于每一条边, 通过它到达下一个点的时间就是要加上它等车的时间。 就是在spfa上面的边权位置稍微修改一下就可以了。code#include <queue>#include <cstdio>#include <...原创 2018-04-20 21:43:17 · 390 阅读 · 0 评论 -
JZOJ3786. 【NOI2015模拟8.19】图
Description给定一个 n 个点 m 条边的无向图,进行多次询问,每次询问点 a 是否能经过恰好 c 条边到达点 b(当然,可以对于一条边可以来回经过多次) 。Input第一行三个数 n,m,q,其中 q 表示询问数。 接下来 q 行,每行三个数 a,b,c。Output对于每次询问,如果存在一种走法,输出 TAK,否则输出 NIESample Input8 7 4 1 2 2 3原创 2018-02-02 21:15:05 · 232 阅读 · 0 评论 -
【NOIP2017提高组正式赛】Day1T3逛公园
Description 策策同学特别喜欢逛公园。公园可以看成一张o个点n条边构成的有向图,且没有自环和重边。其中1号点是公园的入口,o号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的时间。 策策每天都会去逛公园,他总是从1号点进去,从o号点出来。 策策喜欢新鲜的事物,他不希望有两天逛公园的路线完全一样,同时策策还是一个特别热爱学习的好孩子,他不希望每天在逛公园这件事原创 2017-11-20 22:23:02 · 1426 阅读 · 0 评论 -
JZOJ5381. 【NOIP2017提高A组模拟9.21】传送蛋糕
题解这里面的传送门是比较特殊的, 我们可以发现,传送门的实质就是: 在某个点(x,y)到它四周的墙的距离都为它到四面墙的最短距离。那么我们就可以连边, 每个点向外连8条边。 然而,边数是十分巨大的,并不能全部记录下来。我们可以O(nm)预处理出来每个点,往四周走, 碰到的第一面墙,利用这个可以快速地求出这个点向外连的8条边。还有一个优化,就是在spfa中的队列, 要从dis小的开始枚举,原创 2017-09-22 22:38:30 · 248 阅读 · 0 评论 -
【NOIP2017提高A组模拟8.16】最短路
分析直接spfa只能拿60分, 对于没有环的情况,就是一棵树, 那就在树上跑倍增。对于有环的情况,我们就想将它变为树。 对于一个环,选一个点作为环顶, 环上的其他点就向环顶连一条边,边权为这个点到环顶的最短路。对于一个询问,我们用倍增将它们弄得同一个环上面, 然后就计算环上的最短距离。对于找环,运用tarjan的思想。code#include<queue>#include<cstdio>原创 2017-08-16 22:10:49 · 369 阅读 · 0 评论 -
JZOJ4597. 现世斩 题解
题目Description异变又发生了,魂魄妖梦作为幻想乡的一名自(cheng)机(guan),主动前去解决异变。 我们用一个n个点、m条边的无向联通图来表示妖梦可选择的路线,妖梦从白玉楼出发,白玉楼被视为编号为1的点,编号为2——n的点是幻想乡的村庄,其中编号为n的村庄发生了异变。 每条边上可能会有一些妖怪袭击人类(然而妖梦是半人半灵),所以对于第i条边,妖梦需要t[i]分钟通过这条路。妖梦带原创 2016-07-09 14:20:26 · 891 阅读 · 0 评论 -
JZOJ1243. TreeCount
题目Description给出一个有N(2<=N<=1000)个顶点M(N-1<=M<=N*(N-1)/2)条边的无向连通图。设dist1[i]表示在这个无向连通图中,顶点i到顶点1的最短距离。 现在要求你在这个图中删除M-(N-1)条边,使得这个图变成一棵树。设dist2[i]表示在这棵树中,顶点i到顶点1的距离。 你的任务是求出有多少种删除方案,使得对于任意的i,满足dist1[i]=dis原创 2016-07-12 19:19:00 · 1410 阅读 · 0 评论