图论
陈末iiiiiiiiiiii
Retired
展开
-
Codeforces Round #611 (Div. 3) F 拓扑排序 构造树 思维
题目Polycarp 决定装饰他的房间,因为新年快到了。 Polycarp 将安装的主要装饰品之一是他将自己焊接的花环。由一根电线连接的几盏灯组成的简单花环对 Polycarp 来说太无聊了。他要焊接一个由 n 个灯和 n-1 根电线组成的花环。恰好一个灯将连接到电网,并通过电线将电力从它传输到其他灯。每根电线恰好连接两个灯;一个灯被称为该电线的主灯(从其他电线获得电力并将其传输到该电线的灯),另一个称为辅助灯(从该电线获得电力的灯)。显然,每盏灯最多有一根电线为其供电(此灯是该电线的辅助灯,而所有其他原创 2022-05-17 20:25:30 · 177 阅读 · 1 评论 -
Codeforces Round #791 (Div. 2) D 二分最小化最大值 拓扑排序 非联通图dfs判环
题目有一天,玛莎在公园里散步,在一棵树下发现了一张图表……很惊讶?你认为这个问题会有一些合乎逻辑和合理的故事吗?没门!那么,问题…Masha 有一个有向图,其中第 i 个顶点包含一些正整数 ai。最初,玛莎可以将硬币放在某个顶点。在一次操作中,她可以将放置在某个顶点 u 中的硬币移动到任何其他顶点 v,从而在图中存在有向边 u→v。每次将硬币放在某个顶点 i 时,玛莎都会在她的笔记本上写下一个整数 ai(特别是,当玛莎最初将硬币放在某个顶点时,她会在笔记本上写下这个顶点处的一个整数)。 Masha 想要原创 2022-05-16 19:41:36 · 124 阅读 · 0 评论 -
340. 通信线路 二分枚举答案 最小化最大值 最短路里套二分
题目题解思路性质如果存在答案,那么答案必然是某条1到n的路径中边的第k+1大值。且这条路径的第k+1大值最小,(大于答案的边只有k条,即最小)。二分答案维护每条路径中最小的大于答案的边的数量。(满足上述性质的最小)当答案大时,此时大于答案边的数量小于k,因为它不是第k+1大值了。反之大于。另外这题因为取01最短路,可以利用双端队列O(n+m)来手动维护单调性。AC代码#include <bits/stdc++.h>//#include <unordered_ma原创 2022-02-23 20:59:55 · 138 阅读 · 0 评论 -
Codeforces Round #615 (Div. 3) F 树的直径 + 多源BFS
题目给你一颗有n个点的树,要求给出三个端点,使得三个端点组成的简单路径最大。N <= 2e5题解思路三个点中必然有两个点相连是树的直径,剩下点那个可以利用路径上点的多源最路径来求出。上面这个结论,用反证法其实挺好证的。借鉴了何逊的代码。果然会C++和不会的区别好大啊。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,in原创 2022-01-04 17:02:10 · 376 阅读 · 0 评论 -
Codeforces Round #605 (Div. 3) E 多源BFS 超级源点
题目给你一个长度为N的数组A,Ai有自己的奇偶性,但是他能和 i- a[i] 和i + a[i] 的地方互换。但是需要一次操作数。要求求出所有元素交换出相反的奇偶性所需的最小操作数。如果不能输出-1。题解思路一开始DFSWa了。应该是因为什么环的更新顺序问题。我也不太清楚。建立两个超级奇数点和超级偶数点。0费用连通奇数偶数点。跑BFS就行了。因为可能有环,所有我们需要保证奇数或者偶数点只由超级奇数或者超级偶数点延申。特判即可。AC代码#include <bits/stdc++.h&原创 2021-12-31 11:31:02 · 521 阅读 · 0 评论 -
Educational Codeforces Round 47 (Rated for Div. 2) D GCD 构造图
题目给你n个点m条边,问你是否可以构造出一个图,图里的每一条边相连的两个点的编号的gcd等于1。n < 1e5m < 1e5题解思路因为m很小,直接考虑暴力,因为我们可以一条一条的建,建满了直接弹出去就行了。再特判给的边能不能构成图即可。这题明显白给,就是不敢写。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,原创 2021-12-22 19:58:25 · 656 阅读 · 0 评论 -
Codeforces Round #494 (Div. 3) E 构造图 贪心
题目给你N个点,规定图的最长路径为d,且点的最大的度不超过K。有N-1条边问你是否可以构造出这样的图如果可以,展示一种答案,否则输出NO题解思路可以先将最长路径D建出来,再使用路径中除端点外的点,来延展出新的点。我们必须维护最长距离任然是d,延展时将延展出这个点的点的最长距离入队,这样他的最长距离也能确定(他也有潜力延展)。这样就能保证最长距离是d,度的话,我们每次同时维护即可。这样最后只需确定点使用完了没有。再特判,k=1,与d=1。因为这两种情况,我们没有可以延展的点。AC代码#原创 2021-12-14 11:16:04 · 624 阅读 · 0 评论 -
2021牛客寒假算法基础集训营4 F 并查集 贪心 思维建边
题目题解思路贪心能拿提升能力大就必须拿,先不考虑给谁。当相同关系的武器但提升能力少的时候,肯定是拿大的。思维建图将武器的分配看成一种关系,即 将两个人连接的桥梁(单人的时候自环即可)。利用并查集让两个人组成一个连通块。即装备可以在这两个人之间选择。当有新装备加入的时候,将连通块扩大,即N-1个装备,肯定在这N个人中选择N-1个人拿装备。有1个人将拿不到装备。当并查集出的两个人已经在同一个连通块中时,即N个人都有装备了,在连通图中表现为自环连通块。当有其他连通块与自环的连通的时候,其他连通原创 2021-11-30 17:08:09 · 511 阅读 · 0 评论 -
Codeforces Round #756 (Div. 3) e1 + e2 通过前序后序遍历 处理 树的多源最短路
题目W要邀请他的K个朋友去他家玩捉迷藏,他家里有N个房间标号为1…N。房间之间有N-1条通道,保证所有房间都是可以直接或者间接互通的。一开始W在1号房间。所有人,每个时间T都可以移动一个房间,也可以不移动。当W走到只有一条通道的房间并且不是1号房间的时候,W赢,如果朋友能在他走到那个房间时间碰到他,朋友获胜。双方都有最优的方案。e1问W是否能获胜e2问朋友在保证W失败的前提下至少需要动多少个人。否则输出-1。题解思路只有一条通道并且不是根节点的房间就是叶子节点。最粗暴的思路就是处原创 2021-11-30 11:48:28 · 507 阅读 · 0 评论 -
AtCoder Beginner Contest 229 E 并查集 逆向思维建边
题目给你N点M边的完全图,每次按点的编号不断删除点(从1到n)。问你每次删除后有几个连通图。题解思路不妨从结果往前考虑。最终状态肯定是一个点都没有,0个连通图。我们从N往前加边加点。然后将可以连接的点并查起来即可。这样我们只需建小到大的单项边即可。大到小的时候,小的点被删除了。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<in原创 2021-11-28 13:16:05 · 408 阅读 · 0 评论 -
2021牛客寒假算法基础集训营2 E 双指针建图 BFS 思维
题目题解思路很容易看出这题就是裸的BFS,但是怎么建图呢?这里用到了双指针。用桶装每个高度,再将桶内的跷跷板从左到右排序。从最低高度开始从左往右从下到上建边。从左到右建图的话直接看是否满足题目条件即可。从下到上就有讲究了。你得先看看上面有没有点,其次要贪心的试探,上一层的这个位置点是否能建边,小了就往前跑,跑到可以建为止,并且建的时候也需要往前跑,跑到不能建的时候记得回溯(即从左到右的下一个点可能可以和前一个点的最后一个位置建边。)这样每个点最多只会被跑2次,时间复杂度是On的。建完了原创 2021-11-17 11:09:04 · 225 阅读 · 0 评论 -
AtCoder Beginner Contest 226 E 图论 连通块中DFS判单环 思维
题目给你一个N个点M条无向边的图。没有自环和重边。确定每条边的方向,要求让每个点的出度为1。确定边的方向有几种情况。对998244353取模。题解思路当连通块N点M边。当N==M的时候就一定有一个自环。(满足连通就需要N-1条边)当N < M的时候就可能有多个环了。这样某点出度必然为2。小于时有某个点就出度为0了。所以,要让每个点出度为1那这个连通块必然就是环了。这样图里的连通块只能是环并且只有一个单环。这里在连通块里dfs判环也感觉有点陌生。贴大佬的话大佬的题解AC原创 2021-11-16 18:19:06 · 367 阅读 · 0 评论 -
AtCoder Beginner Contest 226 C dfs序 逆拓扑序
题目一个武术高手,可以学T种武术,但他只想学第T个武术,学每个武术有需要花费的时间和前置武术条件(即要先学会前置的武术)。求他学会第T个武术需要的最少时间。题解思路一开始想并查集什么的,没想太明白。如果从图论想的话,这题就可以解决了。如果正向建图的话,不容易得出答案的。因为起点难确定。而如果反向建图的话,从T点出发往回跑,跑到每个武术的最基础武术点(即无需前置武术的那种)。并且每个点只跑一次。记录出来的就是答案。帖大佬的一句话我们反向跑的时候当这个点以及被学过了,那就没必要再跑一遍了。原创 2021-11-16 15:57:43 · 703 阅读 · 0 评论 -
2021牛客寒假算法基础集训营1 C 无根树问题的处理策略 前序后序遍历 奇偶匹配 DFS
题目题解思路手模几次,可以发现,非叶子节点只能连接一个叶子节点。因为叶子节点必须和父节点的颜色相同。其次树必须满足每个节点必须有且只有1个相同颜色的节点。之前一直不清楚如何处理无根树,现在懂了一点,无根树的任意一个点都可以拿来当场根节点来使用(手模后依然符合树的定义)。这样我们似乎,只需让每个节点只匹配一个相同颜色的节点,并且叶子节点必须和父节点匹配。这样我们利用后序遍历,先到叶子节点的父节点,将父节点和叶子节点相连。后续往上返回的时候,让两个相连的节点并且没有被匹配的节点颜色相同。当所有原创 2021-11-10 20:20:35 · 1143 阅读 · 0 评论 -
力扣407. 接雨水Ⅱ 最短路迪杰斯特拉 优先队列 + 贪心
题目题解思路学长讲的真的好把高度看成最短路,最短的点延申出的必然是最短路。AC代码#define PII pair< int, pair<int ,int > > class Solution {public: int trapRainWater(vector<vector<int>>& heightMap) { int n = heightMap.size() , m = heightMap[0].siz原创 2021-11-03 18:34:36 · 240 阅读 · 0 评论 -
456. 车站分级 拓扑排序 N 对 N 建边 虚拟节点优化 贪心
题目TP题解思路建立有向边来表示差分约束。会大一级就建1边 。站点之间不建边。使得答案最小。(贪心)这样图的最长路就是答案了。而拓扑序利用边权来更新最大值,就可以满足答案是最长路(根据拓扑排序的定义理解)。再这样再跑一遍拓扑序来得出答案。这样车站之间建边可能会变成nn , y总用虚拟点优化使得只需2n条边即可。AC代码#include <iostream>#include <cstdio>#include <cstring>#include原创 2021-10-28 18:19:05 · 114 阅读 · 0 评论 -
164. 可达性统计 拓扑排序 逆拓扑序求路径点数 长二进制数 bitset的运用 位运算
题目题解思路先获取图形的拓扑序,再反着走一遍拓扑序(加上反向建边),利用STL里面的bitset来表示这个点和其他点的状态1则连通0不连通。初始化自己为1。延申一个节点的时候就和这个点的bitset值进行或运算 | (即传递1)最后输出每个节点的bitset的含1数即可。bitset简单介绍这题如果用dfs来遍历的话,感觉会很复杂(因为初始节点未知,加上重边的影响)。AC代码#include <iostream>#include <cstdio>#includ原创 2021-10-19 10:45:07 · 95 阅读 · 0 评论 -
AtCoder Beginner Contest 223 D 有向图的拓扑排序
题目给定一个1到N 全排列 P找出 字典序最小的 子排列p 满足给定M个 ai 要比 bi 晚出现如果不存在这样的序列输出-1题解思路拓扑排序入门如果没学过拓扑排序,这题就非常棘手,学过了就会发现,这是个裸题 。利用拓扑排序,我们可以得到一个有向图的一个有向的路径满足没有一个节点指向它前面的节点。实现方面就是先将所有入度为0的点放入队列,再将这些点的删除出队操作(即这个点延申出的点的入度-1),当有新的入度为0的点出现的时候就入队。出队的时候保存入数组。这样数组值的序列就是拓扑排原创 2021-10-18 20:04:56 · 140 阅读 · 0 评论 -
Codeforces Round #748 (Div. 3) E 模拟 无向图点的入度
题目树是无环的无向连通图。这个问题是关于无根树的。一棵树的叶子是一个顶点,最多连接一个顶点。园丁维塔利从 n 个顶点种了一棵树。他决定修剪这棵树。为此,他执行了许多操作。在一次操作中,他移除了树的所有叶子。一棵树的例子。例如,考虑上图所示的树。下图显示了对树只应用一个操作的结果。将“移除所有叶子”操作应用于树的结果。注意操作的特殊情况:对空树(0 个顶点)应用操作不会改变它;对具有一个顶点的树应用操作会移除该顶点(该顶点被视为叶子);对具有两个顶点的树应用操作会删除两个顶点(两个顶点都被视原创 2021-10-14 18:36:30 · 68 阅读 · 0 评论 -
Aizu - 2224 最小生成树变式
题目有n个点和m条边,每条边有不同的权值,问最少花费多少删除边能使得图中没有圈。给你点的坐标,自己计算边权。结果保留3位小数。题解思路有位大佬讲的很好大佬的博客没看懂题目郁闷好久AC代码#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;const int maxn = 0x3f3f3f3f ;s原创 2021-07-28 14:29:18 · 113 阅读 · 0 评论 -
Aizu - 2249 在 最短路 基础上 求此时的最小生成树
题目链接题解思路1e5 不存在 负权 锁定 堆优化迪杰斯特拉来处理最短路生成树就是每个源点被松弛后加入dis数组所组成的,我们只要在松弛后将每个点提供生成树的值代入即可。不过还是有特殊条件的,当边等于此时的dis值时,我们要选择较小的花费,此时可以松弛也可以不松弛,对最短距离并没有影响。最后再累加上每个点提供的生成树值即可。AC代码#include <iostream>#include <cstdio>#include <algorithm>#in原创 2021-07-27 21:14:50 · 93 阅读 · 0 评论 -
POJ - 3723 最小生成树 最大生成树 求最大优惠值
题目题解思路没看清题目,被绕了一下,这里每个人的雇佣费用都是固定的,我们进行要求出能优惠的最大值,根据题目的权值,可以生成一个最大生成树,求出优惠的最大值。一开始写着写着写成贪心了,忽略了一个人有多个关系的情况,这里用树形的结构就能很好处理了。AC代码#include <iostream>#include <algorithm>#include <cstdio>using namespace std;struct node{ int x,原创 2021-07-27 17:10:16 · 54 阅读 · 0 评论 -
CodeForces - 1095F 最小生成树 贪心优化建边
题目题解思路裸的最小生成树,比赛时就差一点就写出来了。如果建边不优化那么就有N平方的复杂度了,显然不行。想到了利用点权先贪心出一个最小的,但是想偏了,排序连成一条线了,固有思维,总是以为必须不停的换点。结果只需找到最小的点和其他点建边即可。AC代码#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;c原创 2021-07-27 10:28:24 · 163 阅读 · 0 评论 -
POJ - 2349 最小生成树 部分免费点 注意减的边数
题目题解思路很容易想到贪心的让最长的边对应的点变成免费点,用克鲁斯卡尔应该挺快的将边排序,然后让最小生成树的边加到 N - 免费点 取最后一条边的长度就行。为什么不是 N - 免费点 - 1 呢 ?因为F个免费点只能形成F-1条边,而生成树需要N-1条边。将最后的边判定公式进行代换就可以得出。AC代码#include <iostream>#include <cstdio>#include <algorithm>#include <cmath&原创 2021-06-01 17:04:34 · 86 阅读 · 0 评论 -
POJ - 3026 最小生成树 利用BFS建边 狂码150行WA系列
题目从 S 出发,去到达每一个 A ,求最小的总路径长度,空格是空地,# 是墙,并且在走的过程中我们可以在 S 或 A 点分裂,也就是从该点可以延伸出多条路径到其他点,但是每一次只能让其中的一个继续行走。也就是说 给每个S或者A都连上一条最短的路作为边,生成一个图,在图里找最小生成树!题解思路将每个S或者A都跑BFS最短路,然后存边,跑最小生成树。然后就是TLE。这题输入就有点狗,不知道什么地方又搞我,暂时没发现没过的样例。TLE代码#include <iostream>#in原创 2021-05-31 21:44:26 · 110 阅读 · 0 评论 -
POJ - 2031 POJ - 1751 最小生成树 部分免费路 注意免费路有重边 WA了一天了啊啊啊啊
题目题解思路两题都是安装题目要求建边,然后处理免费路。坑点因为免费路存在重边,当将免费边直接并入并查集时需要判断并入了再让树的节点树++。C++ double 用LF G++ 用 F 不然WA哭你其他的按照模板操作即可AC代码#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>using namespace std;int n,slo;原创 2021-05-31 21:33:34 · 88 阅读 · 0 评论 -
HDU - 1875 最小生成树 建边限制 WA精度 Kruskal
题目题解思路差点看错题目,我一开始以为是建树的限制浪费了挺多时间的。结果是建边的限制,直接套模板即可。坑点AC代码#include <iostream>#include <cstdio>#include <queue>#include <cmath>#include <algorithm>#include <vector>using namespace std;struct node{ int q原创 2021-05-31 17:33:35 · 101 阅读 · 0 评论 -
POJ - 2421 克鲁斯卡尔 最小生成树 在树中已连通部分免费边 水一水
题目题解思路对已连通的边直接并查集连接起来,然后其他的照搬模板。AC代码#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;const int maxn = 0x3f3f3f3f ;struct node{ int q,z,w;}mp[10100];int a[1000];int ans原创 2021-05-30 13:52:50 · 103 阅读 · 0 评论 -
POJ - 1287 最小生成树 板子 写了下克鲁斯卡尔(Kruskal)
题目题解思路克鲁斯卡尔思想先将边进行升序排序 。贪心的获取每一条边,用并查集的find检查是否在同一棵树上,不是同一棵树上的就合并,累加上这条边的权值,当合并的边数为节点总数-1时,最小生成树就形成了。AC代码#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;const int maxn = 0x3f原创 2021-05-28 18:56:32 · 84 阅读 · 0 评论 -
POJ - 1251 最小生成树模板题 prim 堆优化版 板子
题目题解思路不太想写前向星,所以用了vector存邻接表。采用堆优化,可以将时间复杂度降到nlogn 还是挺不错的 if ( vis[head[tmm.z][i].z] == 0 && dis[head[tmm.z][i].z] > head[tmm.z][i].w ) //发现某条边到树的距离 比 dis数组的小 而且 这条边的终点未被松弛操作过 dis[head[tmm.z][i].z] = head[tmm原创 2021-05-28 18:28:43 · 121 阅读 · 0 评论 -
POJ - 3169 差分约束 判负环 SPFA 图论 抽象最短路 邻接表
题目题解思路难点在用差分约束的条件建图,今天才学了点差分约束。结论 证明和有关差分约束的详解我们只要将题目的条件不等式符号,全转化为<=号,然后跑最短路,如果存在负环就是不能到达的,如果最短路跑不过去,那就是无限大。AC代码#include <cstdio>#include <iostream>#include <vector>#include <queue>using namespace std;int const原创 2021-05-22 14:46:55 · 94 阅读 · 0 评论 -
LightOJ - 1074 SPFA spfa判负环 + dfs染色法 + 最短路 有关染色法和负环的实验 多组输入切勿忘记初始化
题目题解思路1. 由于是立方差,所以存在负环,迪杰斯特拉就失效了。SPFA启动!2. 对于负环上的点,我们要进行染色处理(当这个点入队的次数大于N时,即用DFS跑出这个点能延申的所有区域)3. 负环,又叫负权回路,负权环,指的是一个图中存在一个环,里面包含的边的边权总和<0。4. 用染色法,将出现负环的点的连通分量全部染色,遇到被染色的点直接跳过!5. 多组样例,一定不要忘记初始化!!!关于 染色法因为存在负环导致1 2 3 4 的值都是假的 ,进而导致 5的值也是假的(尽管5不原创 2021-05-20 17:52:20 · 127 阅读 · 0 评论 -
POJ - 1511 链式前向星存邻接表 + 堆优化迪杰斯特拉+ 反向建图 图论 最短路
题目链接题解思路题目数据1e6,锁定(堆优化 迪杰斯特拉 )(nlogn)。边都是单向的,过去和回来走的路不同,所以我们要正反向建图两次,然后将dis的值全部加起来就行了!但是1e6貌似用不了vector(太占内存),只能 链式向前星!介绍下链式向前星int pot; // 标记边的数struct edge { //结构体存边 int to,next; //to和w是这个链表的数据 to指 这条边到的地方 w指权值 ll w; //next 是 指向下一原创 2021-05-18 21:41:22 · 161 阅读 · 0 评论 -
封印之门 抽象最短路 看懂题目
题目链接题解思路首先要看懂题目,一次操作只能改变一个字符,不是多个!!!这样我们可以抽象出题目是求每个字母到每个字母的最短路再扫一遍加起来!AC代码#include <iostream>#include <cstring>#include <cstdio>#include <vector>#include <queue>#include <map>#include <string>using原创 2021-05-14 16:51:38 · 91 阅读 · 0 评论 -
POJ - 3259 SPFA判断负环 队列优化 邻接表 超级源点 图论
题目链接题解思路当存在负环时,时间就能通过负环不断减去。这样就能回到截止之前。判断思路和正环类似,代码和最短路类似,取小的一方,当一个点被松弛超过 N次时 ,存在负环 。调了半天发现double存int变0了。AC代码#include <iostream>#include <cstdio>#include <vector>#include <cstring>#include <queue>using namespace s原创 2021-05-13 16:50:57 · 118 阅读 · 0 评论 -
POJ - 1860 最短路 SPFA 判断正环 模版 写了很久
题目题解思路题目不容易理解,用迪杰斯特拉好像不行,这里好像用源点出发容易理解点,用邻接表存图 (一开始佣金汇率输入反了 痛苦啊 )。因为每一步的有的钱兑换出来的钱是不一样的可能亏可能赚,所以最好就以源点出发来进行对钱的兑换,从存入dis数组。当一个dis的值被松弛的次数比 N还多时(在某个地方被多次松弛) 就存在正环 ! 就是不断加钱,刷钱的感觉。此时return即可!SPFA对每个点都可能多次入队 ,当可以松弛时,被松弛的点可能又入队,就可以多次松弛,这样就可以判断正环和负环!最短路也是行的原创 2021-05-13 11:33:58 · 134 阅读 · 0 评论 -
HDU 4725 层级最短路 思维建图 邻接表 堆优化迪杰斯特拉 真的难想 区域网络赛真题
题目题解思路知道是最短路,怎么建图呢?一开始想到每层来一个超级源点,但是方向不知道怎么确定,用双向边果然WA了(如果是双向边,那一层的都会变成0费连通了 )。翻了翻 大佬的博客大佬定义了一种规则,让这个超级源点实现了功能对于上下层的源点,进行 点 到 源点 单向连通对于本层源点进行 源点 到 点单向连通思考一下 如果反过来 也是可行的属实巧妙啊!然后就是跑最短路了,这里是10的5次方,朴素的迪杰斯特拉肯定会TLE,刚好没用过堆优化和邻接表,试试水!堆优化 记得重载运算符原创 2021-05-12 17:59:02 · 166 阅读 · 1 评论 -
POJ - 3660 确定排名 弗洛伊德 图论 打赢的人加打输的人总和为n-1
题目题解思路弗洛伊德当两个点产生一条路可以比 用第三个点和前两个点产生的合并路更短的话 松弛它。换到这题当 i 被 K 打败 但 i 打败了J 这样我们可以得出 K打败了J for (int i = 1 ;i <= n ; i++ ) for (int k = 1;k <= n ;k++ ) for (int j = 1; j<= n; j++) { if (mp[k][j]原创 2021-05-11 19:56:32 · 70 阅读 · 0 评论 -
POJ - 1062 昂贵的婚礼 超级源点 枚举区间 最短路 未优化的迪杰斯特拉实现 图论
题目题解思路此题难点应该在于建图吧,认真读题抽象出单向的图,然后建立个超级源点与每个点用原价相连。用源点跑最短路,dis[1]就是答案。但是坑就坑在区间!这题居然有比酋长地位高的人!!!所以区间未必以酋长为上限,当然酋长也有可能是下限!枚举区间在加入松弛点或者进行松弛的时候加入判断,然后更新每次的最小值即可! for (int j = lvmax - dins ;j <= lvmax + dins ; j++ ) //枚举区间下限j { in原创 2021-05-11 16:07:23 · 89 阅读 · 0 评论 -
POJ - 1797 最短路变式 求路径中 最大的最小边
题目题解思路求两点之间 路径中 最大的最小边和上一题有点类似,还是根据迪杰斯特拉的思想,如何保证此时路径最大呢? 我们只要在松弛的时候,每次取和原点的路径最大的点来进行松弛,就可以保证此时松弛出来的结果是最大的了。然后每次取最小的边即可。AC代码#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;const in原创 2021-05-09 17:16:05 · 264 阅读 · 0 评论