
图论
文章平均质量分 53
准备修改的专栏
ssl_fuyang
ヾ(◍°∇°◍)ノ゙
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
最小斯坦纳树【模板】
斯坦纳树原创 2022-08-12 07:56:43 · 356 阅读 · 0 评论 -
最短距离【SPFA】【最小生成树】
>Linkybtoj最短距离>Descriptionn≤105,m≤2∗105n\le 10^5,m\le 2*10^5n≤105,m≤2∗105>解题思路得出一些性质:一个白点到距离它最近的黑点,路上其它点都是白点,而且这个黑点也是这些白点距离最近的黑点跑出来大概就是一个多条链拼在一起,结束点为黑点的图。发现这样很不好处理我们建一个点 TTT,所有黑点与 TTT 连一条边权为 0 的边,这样最终得到的图就是一棵以 TTT 为根的树(所有白点最终到达 TTT)从 TT原创 2021-11-19 08:26:00 · 228 阅读 · 0 评论 -
[CF1473E]Minimum Path【分层图最短路】【dijkstra】
>Linkluogu CF1473E>Description给出一张 nnn 个点 mmm 条边的无向图规定最短路的定义为:这条路径上的权值之和,减去最大权值,加上最小权值求 111 到其他所有的点的最短路n,m≤2∗105n,m\le 2*10^5n,m≤2∗105>解题思路这种在一条路上对路径的权值操作的,想到分层图最短路考虑最大权值、最小权值怎么搞,发现题意等同于「这条路径上的权值之和,减去一条边的权值,加上一条边权值」,因为这样求最短路,最优的情况肯定是「减去原创 2021-11-17 12:19:19 · 179 阅读 · 0 评论 -
[JLOI2011]飞行路线【分层图最短路】【dijkstra】
>Linkluogu P4568>Description给出一张 nnn 个点,mmm 条边的无向图。选择其中的一条路,可以最多减去其中 kkk 条路径的权值求 SSS 到 TTT 的最短路n≤104,m≤5∗104,k≤10n\le 10^4,m\le5*10^4,k\le10n≤104,m≤5∗104,k≤10>解题思路我们把点复制成 k+1k+1k+1 层,其中跨去另一层的次数为 kkk,可以在这之间搞减去的路径的权值把相邻两层之间的边权值赋为 0,每层之间正常建原创 2021-11-17 12:06:00 · 345 阅读 · 0 评论 -
Spasmodic(交互题)【树】【二分】
>Linkluogu T207969>Descriptionn≤500n \le 500n≤500idea:stoorz>解题思路本人写的第一道交互题QwQ我们假定 1 为根,那就可以通过 n−1n-1n−1 次询问第 iii 个点和第 111 个点得到每个节点的深度,将图分层现在我们要找到当前这层,每个点的父亲,显然这些父亲都是在上一层的既然枚举到了这一层,那就说明前面的层的父子关系都是确定了的,我们可以处理出 gig_igi,表示上一层前 iii 个点与根节点原创 2021-11-09 21:17:29 · 167 阅读 · 0 评论 -
树上跑步【欧拉序】【结论】
>Linkybtoj树上跑步>Description小 A 每天会在某一个以 1 为根、N 个结点的有根树上跑步,初始时,每个结点都有一个障碍物,每个障碍物会按照深度优先的顺序周期性地在以初始点为根的子树中移动,每个单位时间只会移动一条边。小 A 初始在 x 点,他要沿着最短路径跑到根结点,且每个单位时间只会移动一条边。在这个过程中,如果小 A 在一个结点遇到了障碍物,他需要消耗 点能量清除它,被清除的障碍物不会再出现。请你求出小 A 需要消耗多少能量才能到终点。n≤5∗105n原创 2021-11-09 08:06:40 · 174 阅读 · 0 评论 -
沿桥旅行【状压DP】【SPFA】
>Linkybtoj冲刺NOIP2021模拟赛B组Day4 T4>Descriptionn≤5∗104,m≤2∗105,k≤12n≤5*10^4,m≤2*10^5,k≤12n≤5∗104,m≤2∗105,k≤12>解题思路看到kkk这么小,我们直接状压DP就行了因为桥是一条路,我就记录 fs,i,0/1f_{s,i,0/1}fs,i,0/1 为走过的桥的状态、当前所在的桥、所在的桥的xxx/yyy端点我们发现我们只用到这kkk座桥的两个端点,所以我们就只用预处理跑这2原创 2021-09-25 21:38:45 · 101 阅读 · 0 评论 -
Cow Party S【SPFA】
>Linkluogu P1821>解题思路直接跑一边正图的SPFA,在把边反过来,跑一边反图的SPFA就可以了>代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#define N 100010#define LL long longusing namespace std原创 2021-08-25 16:39:03 · 116 阅读 · 0 评论 -
Portals G【并查集】
>Linkjzoj7221>Description>解题思路求每一条边相连通的最小哞尼值>代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define N 400010#define LL long longusing namespace std;struct node{ int p[5],原创 2021-08-24 07:46:16 · 114 阅读 · 0 评论 -
Sum of Distances P【BFS】【数论】【容斥】
>Linkluogu P7293>Description∑Ni≤105,∑Mi≤2⋅105∑N_i≤10^5, ∑M_i≤2⋅10^5∑Ni≤105,∑Mi≤2⋅105>解题思路观察一个KKK元组的点,假设其中aia_iai在第iii个图中“先到达”了,那它可以在与它相连的一条边上跳来跳去,“等”其他图的点到达因为等的时间只能为偶数,所以(1,1,...,1)(1,1,...,1)(1,1,...,1)能否到达这个KKK元组的点,就与每个图中1到达aia_iai的原创 2021-08-18 14:43:55 · 170 阅读 · 0 评论 -
Telephone G【分层图】【SPFA】
>Linkluogu P7297>Description111~NNN头奶牛站成一排,每个奶牛都有颜色aia_iai (1≤ai≤K≤501≤a_i≤K≤501≤ai≤K≤50),给出K∗KK*KK∗K矩阵表示从颜色iii的牛可以走到颜色jjj,代价为两头牛之间的距离,问从111走到NNN最小代价>解题思路在颜色上面建边然后跑SPFA会有一个点TLE所以要考虑优化因为代价为两个点之间的距离,如果所有牛都是同一个颜色,那我们把一个点连向左右边,代价为1就行了我们把原来原创 2021-08-18 08:17:24 · 128 阅读 · 0 评论 -
结点覆盖【树形DP】
>Linkybtoj结点覆盖>Description给出一棵有根树,要求选出一些结点。若选中某个结点,则它本身、它的父亲结点和儿子结点被覆盖。选出第 iii 个结点需要一定的花费 aia_iai,求覆盖这棵树所需的最小花费。>解题思路树形DP。一开始写只设置了两种方式,怎么都过不了QAQ原来要设三种%%%fi,kf_{i,k}fi,k表示以iii为根的子树全部被覆盖,iii 被覆盖的方式为kkk的最小花费方式kkk:k==0k==0k==0,选择 iii 的父亲原创 2021-08-10 21:54:07 · 369 阅读 · 0 评论 -
没有上司的舞会 / 树上求和【树形DP】
>Linkluogu P1352ybtoj树上求和>解题思路经典例题 划水>代码**#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define N 6010using namespace std;struct edge{ int to, nxt;} e[N * 2];int n, a[N], f[N][原创 2021-08-10 20:32:50 · 102 阅读 · 0 评论 -
判断负环【SPFA】
>Linkybtoj判断负环>解题思路特别坑的一道题,搞得我检查了好久(所以要认真审题TT)坑1:输出的“YE5”,“N0”,后面那两个实际上是数字坑2:当边权不为负数时是无向边,边权为负数时是有向边我们从1开始跑一个最短路spfa,如果存在负环的话我们就会在这个环上一直跑下去所以记录下每条路径经过的边数,经过的边多于总数mmm的话,就说明存在负环>代码#include <iostream>#include <cstdio>#include原创 2021-07-02 17:12:45 · 98 阅读 · 0 评论 -
单源最短路径【Dijkstra(堆优化)】【模板】
>Linkybtoj单源最短路径luogu P4779>解题思路这道题原本以为是SPFA,结果被卡掉了,所以告诉了我求单源最短路径#无负权边➡一定要用 dijdijdij+堆优化(更快)#有负权边➡一定要用 SPFASPFASPFADijkstraDijkstraDijkstra如何实现?1.将起点到所有点的距离设为∞∞∞,但是起点到自己的距离disstart=0dis_{start}=0disstart=02.起点已变为白点,剩下的点暂时都为蓝点,dijdijdij的实现原创 2021-07-02 16:16:32 · 123 阅读 · 0 评论 -
廉价最短路径(特长生2013)【SPFA】【Floyed】
>Description给出一张有边权的有向图,问在所有从0到1的最短路中,最少花费的一条路花费为多少>解题思路考虑到“顶点最多有100个;边最多有1000条”,可以简单地解决这道题先用floyed跑出从0到1的最短路是多少(也可以用spfa,不过floyed不会爆而且还比较好打所以用floyed)然后再用spfa跑最少花费,添加一些条件,判断是否为最短路就行>代码#include <iostream>#include <cstdio>#inc原创 2021-05-14 21:43:26 · 96 阅读 · 0 评论 -
通信线路【二分】【spfa】
>Linkybtoj通信线路>解题思路求最大值最小,可以考虑二分答案二分以后如何处理呢?我们将二分出来的mid作为标准值,边权大于mid的为1,小于等于的为0,这样跑一个spfa,如果1到n的最短路超过了k,说明路径上大于mid的数多于k,当前mid作为答案是不行的>代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#原创 2021-05-09 12:11:09 · 191 阅读 · 0 评论 -
灾后重建(特长生2016)【Floyed】
>Linkluogu P1119>解题思路题意:给出一张有边无点的图,依次激活每一个点,问某些时刻任意两点之间的最短距离观察到输入数据n≤200n≤200n≤200,所以考虑用FloyedFloyedFloyed由于输入的询问天数ttt为不下降序列,等于我们每次再加入一些点进入图,所以我们不用每次询问都建一个新的图,可以直接在旧图的基础上进行更新那么如何进行操作?运用FloyedFloyedFloyed的原理,我们把准备加入的点当做“中转点”再跑一遍FloyedFloyedFlo原创 2021-03-20 16:59:10 · 115 阅读 · 0 评论 -
高效生产【SPFA】
>Linkybtoj提高模拟赛A组Day10T2>Description给出一张带边权的有向图,qqq次询问,问从aaa到111,再从111到bbb的最短路是多少>解题思路从111到bbb的很好求,做一个以111为起点的spfa求出从111到任意点的最短路求aaa到111,考虑转边,把全部边转向,再做一个以111为起点的spfa,这样求出新图中从111到任意点的最短路,实际上就是从任意点到111的最短路>代码#include <iostream>#原创 2020-12-01 19:21:39 · 91 阅读 · 0 评论 -
平行旅行【最短路】【贪心】
>Link牛客1030普及T2>Description给出一个有n个点的图,每个点都有对应的坐标其中每两个点之间都有且仅有一条路径,路径长为两点间的哈密顿距离这n个点中有m个固定的点,我们可以在任何时候任意位置花费0代价到达这m个点中的任何一个要求求一条最短路,这条路径中一定存在1、2、3…n的到达顺序>解题思路两点之间的路径权值为哈密顿距离,因此我们知道从iii步行到jjj的最短路一定是直接走两点之间的那一条路径传送门的情况,我们就直接O(nm)暴力求出从每个传送门原创 2020-10-30 19:29:15 · 160 阅读 · 0 评论 -
自由世界【SPFA】
>Link牛客1030普及T4>Description这道题类似平行旅行,不过每两点之间不一定有路径,并且路径长度以给出、不为哈密顿距离>解题思路显然我们要求到每一个非传送门点的最短路,也就是多源最短路,比赛的时候我估测了一下以为会超时就打了一个floyedTAT,结果正解就是求多个点的SPFA思想和上面的平行旅行也差不多,当我们求[i,i+1][i,i+1][i,i+1]之间的最短路时,如果i+1i+1i+1是传送门点就不对答案产生贡献,如果不是就以iii为起点跑一遍S原创 2020-10-31 11:10:22 · 177 阅读 · 0 评论 -
魔术【SPFA】
>DescriptionMarah是一名魔法师,她生活的大陆上有 n 座城市,城市之间通过 m 条路径相连, 每条路径都以一个权值 。有一天,她突然想去 n 号城市玩。但是她很懒,于是她在路上行走的时候会用一点小小的法术,改变一下两座城之间的距离但是她的法力也是很珍贵的,所以她决定,如果从她的家里出发,到达某个城市所经过的所有路径的权值的最大公约数为g ,从该城市出发前往下一个城市的路径的权值为w ,则经过这条路的时候会施法将这条路的路程缩 短为 wgcd(g,w)\frac {w}{gcd(g原创 2020-08-27 13:43:41 · 438 阅读 · 0 评论 -
最优路线【Floyed】
>Description一个 n 个点 m 条边的无重边无自环的无向图,点有点权,边有边权,定义一条路径的权值为路径经过的点权的最大值乘边权最大值。求任意两点间的权值最小的路径的权值。>Input第一行两个整数 n,m,分别表示无向图的点数和边数。第二行 n 个正整数,第 i 个正整数表示点 i 的点权。接下来 m 行每行三个正整数 ui,vi,wi,分别描述一条边的两个端点和边权。>Outputn 行每行 n 个整数,第 i 行第 j 个整数表示从 i 到 j 的路径的原创 2020-08-23 21:51:18 · 7973 阅读 · 0 评论 -
传送爸爸【图论】【SPFA】【记忆化搜索】
>Descriptionwdyhy有一个 R 行 C 列的迷宫,每一个小格有一个字符。#(number sign) 表⽰一个墙块,. (dot) 表⽰一块空地,S (uppercase letter s) 表⽰你现在的位置,C (uppercase letter c) 表⽰爸爸现在的位置。你只能通过空地,并且,只有当两块空地有相临边时,你才可以从其中一个走向另一个。特别的,描述在地图里的矩形区域完全被墙块包围。为了能够更快的到达爸爸的位置,你从迦勒底获得了一个传送枪,它的操作方式如下:任原创 2020-08-23 19:32:53 · 190 阅读 · 0 评论 -
我的世界【图论】【拓扑排序】【堆】
>Description>Input>Output>Sample Input43 11 24 2>Sample Output3 2 4 1>解题思路输出样例其实是A从小到大对应的序号,a3<a2<a4<a1 比赛的时候没看懂TT我们会发现,对于一个节点的对应矿洞,对应矿洞的对应矿洞也同样是这个节点,也就是说,所有矿洞2个一组,每组中每个矿洞的对应矿洞是对方所以我们可以从叶子节点开始搜起,因为叶子节点只有一条边,连原创 2020-08-22 21:32:56 · 212 阅读 · 0 评论 -
[USACO07DEC]Sightseeing Cows G【spfa负环】【0/1分数规划】
>Description作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天。旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得的闲暇。很幸运地,奶牛们找到了一张详细的城市地图,上面标注了城市中所有L(2⩽L⩽1000)座标志性建筑物(建筑物按1…L1顺次编号),以及连接这些建筑物的P(2⩽P⩽5000)条道路。按照计划,那天早上Farmer John会开车将奶牛们送到某个她们指定的建筑物旁边,等奶牛们完成她们的整个旅行并回到出发点后,将她们接回农场。由于大城市中总是寸原创 2020-08-19 18:43:46 · 188 阅读 · 0 评论 -
开心小屋(smile)【DFS】【环】
>DescriptionKc来到开心小屋。开心小屋是用来提升心情的。在这个小屋中有n个房间,一些房间之间有门连通。从房间i到达房间j,心情值可以加上-10000<=Cij<=10000,当然Cij可能是负的。现在kc失恋了,所以他想要知道他是否可以在这个小屋中无限地增加他的心情值,也就是无限地绕着一个环走?请帮kc求出最小的环需要经过的房间数,来使他的心情无限增加。>Input第一行给出,1<=n<=300,1<=m<=5000。分别表示房间数及门的原创 2020-08-19 16:27:09 · 844 阅读 · 2 评论 -
架设电话线【二分答案】【SPFA】
>DescriptionFarmer John打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务。于是,FJ必须为此向电信公司支付一定的费用。FJ的农场周围分布着N(1 <= N <= 1,000)根按1…N顺次编号的废弃的电话线杆,任意两根电话线杆间都没有电话线相连。一共P(1 <= P <= 10,000)对电话线杆间可以拉电话线,其余的那些由于隔得太远而无法被连接。第i对电话线杆的两个端点分别为A_i、B_i,它们间的距离为L_i (1 <= L原创 2020-08-12 15:54:33 · 352 阅读 · 0 评论 -
旅行【图论】【堆】
>Description>Input>Output>Sample Input5 61 2 31 3 42 4 22 5 3>Sample Output4>解题思路由题意得,此无向图可以看做成一棵树,如:求某两点的最短路代价,通过推算得出(题目中的加加减减),a ~ b = a ~ 1(根节点) + 1 ~ b,并且第一个符号与最后一个符号肯定都为加因为题目要求的路径的条数必须为奇数,所以符合条件的路径必须是从偶数层出发到达奇数层原创 2020-08-11 21:05:16 · 131 阅读 · 0 评论 -
腾讯大战360【SPFA】
>Description现在,腾讯与360由于身处异地,非常迫切地想在最短的时间内相遇,他们希望你来帮他们找到一个最好的方案使得相遇的时间最短。在此我们定义“相遇”为:两个人皆在同一个编号的城市上就可以了。也就是说,在这里我们不考虑两人在路中间相遇。>Input输入数据第一行:N和M(用空格隔开) 表示这是一个N*N的图并且有M条边,第二行到第M+1行 为这个图的详细信息。...原创 2019-03-02 16:20:21 · 609 阅读 · 0 评论 -
洛谷P1073 最优贸易【SPFA】
&gt;DescriptionC国有 n个大城市和m 条道路,每条道路连接这 n个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 1条。同一种商品在不同城市的价格不一定相同。但是,同一种商品在同一个城市的买入价和卖出价始终是相同的。他决定利用商品在不同城市中的差价赚回一点旅费。设...原创 2019-03-02 15:51:39 · 243 阅读 · 0 评论 -
洛谷P1346 电车【SPFA】
>Description在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能)。在每个路口,都有一个开关决定着出去的轨道,每个开关都有一个默认的状态,每辆电车行驶到路口之后,只能从开关所指向的轨道出去,如果电车司机想走另一个轨道,他就必须下车切换开关的状态。为了行驶向目标地点,电车司...原创 2019-02-27 17:26:31 · 142 阅读 · 0 评论 -
最短路径问题【Floyed】【DP】
&gt;Description平面上有n个点(N&lt;=100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点直线的距离。现在的任务是找出从一点到另一点之间的最短路径。&gt;Input输入文件short.in,共有n+m+3行,其中:第一行为一个整数n。第2行到第n+1行(共n行),每...原创 2019-01-17 09:04:37 · 423 阅读 · 0 评论 -
最短路径问题【SPFA】
#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;cstdio&amp;amp;gt;#include&amp;amp;lt;cmath&amp;amp;gt;using namespace std;struct ooo{ int to,next;}l[105];int h[105],a[105],b[105],原创 2019-01-27 11:53:41 · 243 阅读 · 0 评论 -
最小花费【Dijkstra】
>Description在n个人中,某些人的银行账号之间可以互相转账。这些人之间转账的手续费各不相同。给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元。>Input第一行输入两个用空格隔开的正整数n和m,分别表示总人数和可以互相转账的人的对数。以下m行每行输入三个用空格隔开的正整数x,y,z,表示标号为x的人和标号为y的人之...原创 2019-01-18 09:14:34 · 1096 阅读 · 0 评论 -
最短路径问题【Dijkstra】
题目见:题目题目题目&amp;amp;gt;解题思路&amp;amp;gt;代码#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;cstdio&amp;amp;gt;#include&amp;amp;lt;cmath&amp;amp;gt;using namespace std;原创 2019-01-18 08:58:52 · 125 阅读 · 0 评论 -
牛的旅行 (最短路)【Floyed】
>Description 农民John的农场里有很多牧区。有的路径连接一些特定的牧区。一片所有连通的牧区称为一个牧场。但是就目前而言,你能看到至少有两个牧区不连通。这样,农民John就有多个牧区了。John想在农场里添加一条路径(注意,恰好一条)。对这条路径有以下限制:一个牧场的直径就是牧场中最远的两个牧区的距离(本题中所提到的所有距离指的都是最短的距离)。考虑如下的有5个牧区的牧场...原创 2019-01-17 20:39:59 · 300 阅读 · 0 评论 -
产生数【图论】
>Description给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15)。 规则: 一位数可变换成另一个一位数;规则的右部不能为零。问题: 给出一个整数 n 和 k 个规则。 经过任意次的变换(0次或多次),能产生出多少个不同整数。>Inputn kx1 y1x2 y2… …xn yn>Output一个整数(...原创 2019-03-30 14:35:46 · 219 阅读 · 0 评论 -
桐人的约会【SPFA】
>Description共有N个街区和M条道路,每条道路连接两个不同的街区,并且通过一条道路需要花费一些时间。从1号街区赶往N号街区,并且你要选择一条道路不能通行,不过不论是哪条道路不能通行,均存在一条路径可以从1号街区前往N号街区,而且亚丝娜一定会选取最短路前往N号街区。亚丝娜最多要花费多长的时间才能到达N号街区。>Input第1行:两个正整数N,M,N表示街区个数,M表示道...原创 2019-04-10 16:37:25 · 165 阅读 · 0 评论 -
观光旅游【图论】【最小环】
>Description旅游机构要:在相同的起点与终点之间找出一最短路线。有N个十字路口,M条道路。每一条观光路线都是由一些路组成的。你的程序必须找出类似的一条路线:长度必须最小,或者说明在这个城镇上不存在这条观光路线。>Input每组数据的第一行包含两个正整数:十字路口的个数N(N<=100),另一个是道路的 数目M(M<10000)。接下来的每一行描述一条路:...原创 2019-04-12 22:16:55 · 133 阅读 · 0 评论