图论
文章平均质量分 75
行走天涯的豆沙包
人生天地间,忽如远行客。
展开
-
G. Reducing Delivery Cost
题解:题意让我们让一条边变成0,然后计算k条路的路径总和最小是多少。我们选择的边有两种情况,分别是选的时候这条边是否在最短路上面,所以我们预处理出所有点与点之间的最短距离,然后枚举让哪条边的权值变成0。#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=1e3+10;typedef pair<int,int> pp;int head[N],e[N<<1],原创 2020-10-29 10:53:22 · 339 阅读 · 0 评论 -
Gym 101987K TV Show Game(2-SAT)
题解:转化为命题的形式就是,如果这个位置猜错了那么其他两个位置就必须要猜对。#include <bits/stdc++.h>using namespace std;//#define int long longconst int N=2e6+10;stack<int> st;int head[N],e[N],ne[N],dfn[N],low[N],ins[N],cnt,id[N],ts,scc;void add(int a,int b){ e[cnt]=b,n原创 2020-09-10 12:06:02 · 224 阅读 · 0 评论 -
牛客算法周周练5
小雨坐地铁题解:采用分层图跑最短路。#include<bits/stdc++.h>using namespace std;#define mp make_pair#define ll long long#define INF 0x3f3f3f3fconst int N = 1e6+100;int n, m, s, t;int ne[N<<1],head[N...原创 2020-05-05 20:58:49 · 177 阅读 · 0 评论 -
树上倍增——城市网络
传送门题解:题目中保证了u到v一定在最短路径上,所以考虑用树上倍增的方法。我们fa数组存的是比当前节点val值严格大的最近祖先。然后每次倍增的时候更新答案就可以了。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+7;int head[N],e[N<<...原创 2020-04-28 15:56:40 · 100 阅读 · 0 评论 -
Domino for Young——二分图
Domino for Young题解:首先肯定不是用匈牙利匹配算法去做啦。。。。数据太大了。那么我们根据增广路的定义:若P是图G中一条连通两个未匹配顶点的路径,并且属M的边和不属M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径.由增广路的定义可以推出下述三个结论:1-P的路径长度必定为奇数,第一条边和最后一条边都不属于M.2-P经过取反操作可以得到一个更大的...原创 2020-03-05 17:55:37 · 218 阅读 · 0 评论 -
Codeforces Round #620 (Div. 2) ——E
Codeforces Round #620 (Div. 2) ——E题意:给x,y加一条边,问是否存在k条路径,可以来回走。题解:这道题显然是树上的问题,首先我们先求出两点的最短路径,如果k小于我们的最短路径显然是不行。然后我们分类讨论的时候判断奇偶就行了。因为我们每条边来回走肯定是走偶数次的,所以不改变我们的奇偶,所以我们最后判断我们最短路的奇偶性和k是否一样就行了。#include ...原创 2020-02-16 12:50:59 · 504 阅读 · 0 评论 -
二分+最短路——通往奥格瑞玛的道路
通往奥格瑞玛的道路跟着队友走系列:队友写什么我写什么。这道题还是很好想的。二分答案然后跑最短路就行了。#include<bits/stdc++.h>#define int long longusing namespace std;typedef pair<int,int> pp;const int N=100010;int e[N],ne[N],head[N...原创 2020-02-14 16:57:06 · 170 阅读 · 0 评论 -
差分约束——再卖菜
再卖菜问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。 第一天,每个商店都自己定了一个价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自己的价格。具体的,每家商店都会将第二天的菜价设置为自己和相邻商店第一天菜价的平均值(用去尾法取整)。 注意,编号为1的商店只有一个相邻的商店2,编号为n的商店只有一个...原创 2020-02-11 13:59:20 · 234 阅读 · 0 评论 -
拓扑排序——可达性统计
可达性统计给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。输入格式第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条有向边。输出格式输出共N行,表示每个点能够到达的点的数量。数据范围1≤N,M≤300001≤N,M≤300001≤N,M≤30000输入样例:10 103 82 32 55 95 92 33 94 82...原创 2020-02-03 17:19:34 · 362 阅读 · 0 评论 -
欧拉路径——骑马修栅栏
骑马修栅栏农民John每年有很多栅栏要修理。他总是骑着马穿过每一个栅栏并修复它破损的地方。John是一个与其他农民一样懒的人。他讨厌骑马,因此从来不两次经过一个栅栏。你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次。John能从任何一个顶点(即两个栅栏的交点)开始骑马,在任意一个顶点结束。每一个栅栏连接两个顶点,顶点用 1 到 500 标号(...原创 2020-02-03 14:48:28 · 264 阅读 · 0 评论 -
欧拉回路模板题
给定一张图,请你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好一次。输入格式第一行包含一个整数 t,t∈{1,2},如果 t=1,表示所给图为无向图,如果 t=2,表示所给图为有向图。第二行包含两个整数 n,m,表示图的结点数和边数。接下来 m 行中,第 i 行两个整数 vi,uiv_i,u_ivi,ui,表示第 i 条边(从 1 开始编号)。如果 t=1 则表示 viv_...原创 2020-02-03 14:04:19 · 365 阅读 · 0 评论 -
欧拉回路——铲雪车
铲雪车随着白天越来越短夜晚越来越长,我们不得不考虑铲雪问题了。整个城市所有的道路都是双向车道,道路的两个方向均需要铲雪。因为城市预算的削减,整个城市只有 1 辆铲雪车。铲雪车只能把它开过的地方(车道)的雪铲干净,无论哪儿有雪,铲雪车都得从停放的地方出发,游历整个城市的街道。现在的问题是:最少要花多少时间去铲掉所有道路上的雪呢?输入格式输入数据的第 1 行表示铲雪车的停放坐标 (x,y)...原创 2020-02-02 22:45:41 · 357 阅读 · 0 评论 -
欧拉回路与欧拉路径笔记
欧拉路径:存在一个路径,走完所有的点,使得每个边只走了一次。对于起点来说:我们只出去。对于终点来说:我们只进来。所以对于起点和终点来说,我们的度数都是奇数对于中间点来说:我们需要一进一出。所以对于中间点来说,我们所有的度数都是偶数结论:1,存在欧拉路径的充要条件是图中奇数的点只能有0或者2个。2,对于无向图,存在欧拉回路的充要条件(1)所有点的度数都是偶数 。对于有向图来说:1,...原创 2020-02-02 15:08:34 · 242 阅读 · 0 评论 -
BZOJ2718——最小重复路径覆盖
捉迷藏Vani和cl2在一片树林里捉迷藏。这片树林里有N座房子,M条有向道路,组成了一张有向无环图。树林里的树非常茂密,足以遮挡视线,但是沿着道路望去,却是视野开阔。如果从房子A沿着路走下去能够到达B,那么在A和B里的人是能够相互望见的。现在cl2要在这N座房子里选择K座作为藏身点,同时Vani也专挑cl2作为藏身点的房子进去寻找,为了避免被Vani看见,cl2要求这K个藏身点的任意两个...原创 2020-02-02 14:44:27 · 209 阅读 · 0 评论 -
二分图——骑士放置(最大独立集)
骑士放置给定一个 N*M 的棋盘,有一些格子禁止放棋子。问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的“骑士”,类似于中国象棋的“马”,按照“日”字攻击,但没有中国象棋“别马腿”的规则)。输入格式第一行包含三个整数N,M,T,其中T表示禁止放置的格子的数量。接下来T行每行包含两个整数x和y,表示位于第x行第y列的格子禁止放置,行列数从1开始。输出格式输出一个整数表示结果。数据...原创 2020-02-01 22:26:14 · 249 阅读 · 0 评论 -
二分图——机器任务(最小点覆盖)
机器任务有两台机器 A,B 以及 K 个任务。机器 A 有 N 种不同的模式(模式0~N-1),机器 B 有 M 种不同的模式(模式0~M-1)。两台机器最开始都处于模式0。每个任务既可以在A上执行,也可以在B上执行。对于每个任务 i,给定两个整数 a[i] 和 b[i],表示如果该任务在 A 上执行,需要设置模式为 a[i],如果在 B 上执行,需要模式为 b[i]。任务可以以任意顺...原创 2020-02-01 18:29:27 · 1475 阅读 · 0 评论 -
二分图——棋盘覆盖
棋盘覆盖给定一个N行N列的棋盘,已知某些格子禁止放置。求最多能往棋盘上放多少块的长度为2、宽度为1的骨牌,骨牌的边界与格线重合(骨牌占用两个格子),并且任意两张骨牌都不重叠。输入格式第一行包含两个整数N和t,其中t为禁止放置的格子的数量。接下来t行每行包含两个整数x和y,表示位于第x行第y列的格子禁止放置,行列数从1开始。输出格式输出一个整数,表示结果。数据范围1≤N≤1001≤...原创 2020-02-01 16:39:29 · 542 阅读 · 0 评论 -
二分图——关押罪犯
关押罪犯S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为 c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为 c 的冲突事件。每年年末,警察局会将本...原创 2020-01-31 22:51:07 · 222 阅读 · 0 评论 -
二分图笔记
二分图要复习的知识点,先在这里留坑。1,二分图,不存在奇数环,所以可以用染色法。2,匈牙利算法,匹配,最大匹配,匹配点,增广路径。3,最小点覆盖,最大独立集,最小路径点覆盖(最小路径重复点覆盖)最大匹配数=最小点覆盖=总点数-最大独立集=总点数,最小路径覆盖4,最优匹配-KM(最小费用流)5,多重匹配(最大流)...原创 2020-01-31 22:47:01 · 75 阅读 · 0 评论 -
bfs+状压——朋也与光玉
朋也与光玉本来说好了再做一下之前没写起的题的,但是看到队友写了这道题手还是比较痒,于是就写了。——————————————————————————————————————————题解:这道题和之前写的拯救大兵很相似,不同点在于这道题没有任何限制的收集光玉。并且题目中说的不存在环,所以是满足拓扑序的,而且光玉的数量很少,可以使用状压。所以就想到了bfs+状压。因为不知道以哪个点为起点,所以...原创 2020-01-31 17:04:52 · 157 阅读 · 0 评论 -
无向图的双联通分量——电力
电力给定一个由 n 个点 m 条边构成的无向图,请你求出该图删除一个点之后,连通块最多有多少。输入格式输入包含多组数据。每组数据第一行包含两个整数 n,m。接下来 m 行,每行包含两个整数 a,b,表示 a,b 两点之间有边连接。数据保证无重边。点的编号从 0 到 n−1。读入以一行 0 0 结束。输出格式每组数据输出一个结果,占一行,表示连通块的最大数量。数据范围1≤n≤...原创 2020-01-28 19:26:09 · 352 阅读 · 0 评论 -
无向图的双联通分量——冗余路径
冗余路径为了从F个草场中的一个走到另一个,奶牛们有时不得不路过一些她们讨厌的可怕的树。奶牛们已经厌倦了被迫走某一条路,所以她们想建一些新路,使每一对草场之间都会至少有两条相互分离的路径,这样她们就有多一些选择。每对草场之间已经有至少一条路径。给出所有R条双向路的描述,每条路连接了两个不同的草场,请计算最少的新建道路的数量,路径由若干道路首尾相连而成。两条路径相互分离,是指两条路径没有一条...原创 2020-01-28 16:45:50 · 305 阅读 · 0 评论 -
有向图的强连通分量——银河
银河银河中的恒星浩如烟海,但是我们只关注那些最亮的恒星。我们用一个正整数来表示恒星的亮度,数值越大则恒星就越亮,恒星的亮度最暗是 1。现在对于 N 颗我们关注的恒星,有 M 对亮度之间的相对关系已经判明。你的任务就是求出这 N 颗恒星的亮度值总和至少有多大。输入格式第一行给出两个整数 N 和 M。之后 M 行,每行三个整数 T, A, B,表示一对恒星(A, B)之间的亮度关系。恒星...原创 2020-01-28 00:19:20 · 150 阅读 · 0 评论 -
有向图的强连通分量——最大半联通子图
最大半联通子图一个有向图 G=(V,E)G=(V,E)G=(V,E) 称为半连通的 (Semi-Connected),如果满足:∀u,v∈V,满足u→v或v→u∀u,v∈V,满足 u→v 或 v→u∀u,v∈V,满足u→v或v→u,即对于图中任意两点 u,v,存在一条 u 到 v 的有向路径或者从 v 到 u 的有向路径。若 G′=(V′,E′) 满足,E′ 是 E 中所有和 V′ 有关的边,...原创 2020-01-27 20:26:50 · 1286 阅读 · 0 评论 -
有向图的强连通分量——学校网络
学校网络一些学校连接在一个计算机网络上,学校之间存在软件支援协议,每个学校都有它应支援的学校名单(学校A支援学校B,并不表示学校B一定要支援学校A)。当某校获得一个新软件时,无论是直接获得还是通过网络获得,该校都应立即将这个软件通过网络传送给它应支援的学校。因此,一个新软件若想让所有学校都能使用,只需将其提供给一些学校即可。现在请问最少需要将一个新软件直接提供给多少个学校,才能使软件能够通...原创 2020-01-27 17:32:22 · 227 阅读 · 0 评论 -
有向图的强连通分量——受欢迎的牛
受欢迎的牛每一头牛的愿望就是变成一头最受欢迎的牛。现在有 N 头牛,编号从 1 到 N,给你 M 对整数 (A,B),表示牛 A 认为牛 B 受欢迎。这种关系是具有传递性的,如果 A 认为 B 受欢迎,B 认为 C 受欢迎,那么牛 A 也认为牛 C 受欢迎。你的任务是求出有多少头牛被除自己之外的所有牛认为是受欢迎的。输入格式第一行两个数 N,M;接下来 M 行,每行两个数 A,B,意...原创 2020-01-27 16:16:45 · 359 阅读 · 0 评论 -
Tarjan——入门笔记
Tarjan入门笔记有向图的强连通分量联通分量的定义:分量中任意两点,u,v。必然可以从u走到v,从v走到u。强连通分量定义:极大联通分量(任何一个联通分量加上一个点之后都不是一个联通分量了。)作用:将有向图缩点成为一个有向无环图。(DAG)(拓扑图)dfs序搜索的时候几个概念1,树枝边2,前向边(特殊的树枝边)3,后向边4,横叉边dfn[u]:u的时间戳是多少。low[u]...原创 2020-01-27 15:25:15 · 164 阅读 · 0 评论 -
LCA—— 闇の連鎖(树上差分)
闇の連鎖传说中的暗之连锁被人们称为 Dark。Dark 是人类内心的黑暗的产物,古今中外的勇者们都试图打倒它。经过研究,你发现 Dark 呈现无向图的结构,图中有 N 个节点和两类边,一类边被称为主要边,而另一类被称为附加边。Dark 有 N – 1 条主要边,并且 Dark 的任意两个节点之间都存在一条只由主要边构成的路径。另外,Dark 还有 M 条附加边。你的任务是把 Dark ...原创 2020-01-27 00:12:07 · 186 阅读 · 0 评论 -
LCA——次小生成树
次小生成树给定一张 N 个点 M 条边的无向图,求无向图的严格次小生成树。设最小生成树的边权之和为sum,严格次小生成树就是指边权之和大于sum的生成树中最小的一个。输入格式第一行包含两个整数N和M。接下来M行,每行包含三个整数x,y,z,表示点x和点y之前存在一条边,边的权值为z。输出格式包含一行,仅一个数,表示严格次小生成树的边权和。(数据保证必定存在严格次小生成树)数据范围...原创 2020-01-26 21:09:27 · 207 阅读 · 0 评论 -
LCA——距离
距离给出 n 个点的一棵树,多次询问两点之间的最短距离。注意:边是无向的。所有节点的编号是 1,2,…,n。输入格式第一行为两个整数 n 和 m。n 表示点数,m 表示询问次数;下来 n−1 行,每行三个整数 x,y,k,表示点 x 和点 y 之间存在一条边长度为 k;再接下来 m 行,每行两个整数 x,y,表示询问点 x 到点 y 的最短距离。树中结点编号从 1 到 n。输出...原创 2020-01-26 16:36:40 · 570 阅读 · 0 评论 -
差分约束——雇佣收银员
雇佣收银员一家超市要每天24小时营业,为了满足营业需求,需要雇佣一大批收银员。已知不同时间段需要的收银员数量不同,为了能够雇佣尽可能少的人员,从而减少成本,这家超市的经理请你来帮忙出谋划策。经理为你提供了一个各个时间段收银员最小需求数量的清单R(0),R(1),R(2),…,R(23)。R(0)表示午夜00:00到凌晨01:00的最小需求数量,R(1)表示凌晨01:00到凌晨02:00的最...原创 2020-01-25 20:09:48 · 342 阅读 · 0 评论 -
LCA——最近公共祖先
祖孙询问给定一棵包含 n 个节点的有根无向树,节点编号互不相同,但不一定是 1∼n。有 m 个询问,每个询问给出了一对节点的编号 x 和 y,询问 x 与 y 的祖孙关系。输入格式输入第一行包括一个整数 表示节点个数;接下来 n 行每行一对整数 a 和 b,表示 a 和 b 之间有一条无向边。如果 b 是 −1,那么 a 就是树的根;第 n+2 行是一个整数 m 表示询问个数;接下来...原创 2020-01-25 16:53:26 · 136 阅读 · 0 评论 -
LCA——入门笔记
LCA才看了Lca记录下学习笔记,稍后会写一些题来巩固所学的知识。LCA有两种求的方法使用o(n)o(n)o(n)的向上标记法。倍增求解1.fa数组fa[i][j]表示以i开始向上跳2j2^j2j步达到的节点。0<=j<=log(n)0<=j<=log(n)0<=j<=log(n)2,depth数组depth[i]表示节点i的深度3,我们可...原创 2020-01-25 16:27:27 · 217 阅读 · 0 评论 -
差分约束——排队布局
排队布局当排队等候喂食时,奶牛喜欢和它们的朋友站得靠近些。农夫约翰有 N 头奶牛,编号从 1 到 N,沿一条直线站着等候喂食。奶牛排在队伍中的顺序和它们的编号是相同的。因为奶牛相当苗条,所以可能有两头或者更多奶牛站在同一位置上。如果我们想象奶牛是站在一条数轴上的话,允许有两头或更多奶牛拥有相同的横坐标。一些奶牛相互间存有好感,它们希望两者之间的距离不超过一个给定的数 L。另一方面,一...原创 2020-01-24 22:36:50 · 183 阅读 · 0 评论 -
差分约束——区间
区间给定 n 个区间 [ai,bi]和n个整数ci[a_i,b_i]和 n 个整数 c_i[ai,bi]和n个整数ci。你需要构造一个整数集合 Z,使得∀i∈[1,n],Z 中满足ai≤x≤bi的整数 x 不少于 cic_ici个。求这样的整数集合 Z 最少包含多少个数。输入格式第一行包含整数 n。接下来n行,每行包含三个整数ai,bi,cia_i,b_i,c_iai,bi...原创 2020-01-24 20:19:59 · 148 阅读 · 0 评论 -
差分约束——糖果
糖果幼儿园里有 N 个小朋友,老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候, 老师需要满足小朋友们的 K 个要求。幼儿园的糖果总是有限的,老师想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求。输入格式输入的第一行是两个整数 ...原创 2020-01-24 17:31:20 · 326 阅读 · 0 评论 -
差分约束——学习笔记
差分约束1,求不等式组的可行解。源点需要满足的条件:从源点出发一定能够到达所有的点。2,步骤:现将题目中的不等式xi<=xj+cx_i<=x_j+cxi<=xj+c转化为j走向i边长度为c 的一条路径找到一个超级源点,使他一定可以遍历图中所有的点。从源点求一次单源最短路。 结果1:如果结果存在负环那么一定无解。 结果2:如果没有负环那么dis[...原创 2020-01-24 16:27:17 · 181 阅读 · 0 评论 -
负环——单词环(01分数规划,结论)
单词环我们有 n 个字符串,每个字符串都是由 a∼z 的小写英文字母组成的。如果字符串 A 的结尾两个字符刚好与字符串 B 的开头两个字符相匹配,那么我们称 A 与 B 能够相连(注意:A 能与 B 相连不代表 B 能与 A 相连)。我们希望从给定的字符串中找出一些,使得它们首尾相连形成一个环串(一个串首尾相连也算),我们想要使这个环串的平均长度最大。如下例:ababcbckjaca...原创 2020-01-23 23:11:23 · 386 阅读 · 0 评论 -
负环——观光奶牛(0,1分数规划)
观光奶牛给定一张L个点、P条边的有向图,每个点都有一个权值f[i],每条边都有一个权值t[i]。求图中的一个环,使“环上各点的权值之和”除以“环上各边的权值之和”最大。输出这个最大值。注意:数据保证至少存在一个环。输入格式第一行包含两个整数L和P。接下来L行每行一个整数,表示f[i]。再接下来P行,每行三个整数a,b,t[i],表示点a和b之间存在一条边,边的权值为t[i]。输出...原创 2020-01-23 22:03:49 · 180 阅读 · 0 评论 -
负环——虫洞
虫洞农夫约翰在巡视他的众多农场时,发现了很多令人惊叹的虫洞。虫洞非常奇特,它可以看作是一条 单向 路径,通过它可以使你回到过去的某个时刻(相对于你进入虫洞之前)。农夫约翰的每个农场中包含N片田地,M条路径(双向)以及W个虫洞。现在农夫约翰希望能够从农场中的某片田地出发,经过一些路径和虫洞回到过去,并在他的出发时刻之前赶到他的出发地。他希望能够看到出发之前的自己。请你判断一下约翰能否做到...原创 2020-01-23 18:40:55 · 246 阅读 · 0 评论