图论
文章平均质量分 68
njuptACMcxk
这个作者很懒,什么都没留下…
展开
-
网络流 - 二分图的多重匹配问题 - 圆桌问题 - 网络流24题 - 洛谷 P3254
网络流 - 二分图的多重匹配问题 - 圆桌问题 - 网络流24题 - 洛谷 P3254题目描述有来自m个不同单位的代表参加一次国际会议。第i个单位派出了ri个代表。有来自 m 个不同单位的代表参加一次国际会议。第 i 个单位派出了 r_i 个代表。有来自m个不同单位的代表参加一次国际会议。第i个单位派出了ri个代表。会议的餐厅共有n张餐桌,第i张餐桌可容纳ci个代表就餐。会议的餐厅共有 n张餐桌,第 i 张餐桌可容纳 c_i个代表就餐。会议的餐厅共有n张餐桌,第i张餐桌可容纳ci个代表就餐。为原创 2021-08-16 14:19:35 · 248 阅读 · 0 评论 -
网络流 - 二分图匹配 - 飞行员配对方案问题 - 网络流24题 - 洛谷 P2756
网络流 - 二分图匹配 - 飞行员配对方案问题 - 网络流24题 - 洛谷 P2756题目描述一共有 n 个飞行员,其中有 m 个外籍飞行员和 (n - m) 个英国飞行员,外籍飞行员从 1 到 m 编号,英国飞行员从 m + 1 到 n 编号。 对于给定的外籍飞行员与英国飞行员的配合情况,试设计一个算法找出最佳飞行员配对方案,使皇家空军一次能派出最多的飞机。输入格式输入的第一行是用空格隔开的两个正整数,分别代表外籍飞行员的个数 m 和飞行员总数 n。从第二行起到倒数第二行,每行有两个整数 u,原创 2021-08-16 13:50:44 · 255 阅读 · 0 评论 -
DFS(连通分量) - 社交集群 - 天梯赛L3-003
DFS(连通分量) - 社交集群 - L3-003分析:画出样例的图可以发现,本质上就是求一个连通块内,特殊点的个数。我们将兴趣爱好编号统一增加1000,与人的编号分离出来,然后按照题意建图。接着遍历整个图,统计连通块的个数,以及每个连通块内,人的个数。最后排序,输出。点的个数 ≤1000+1000 = 2000,时间复杂度O(n)代码:#include<sstream>#include<iostream>#include<cstring>#incl原创 2021-04-19 23:36:53 · 131 阅读 · 0 评论 -
图的遍历(邻接矩阵) - 图着色问题 - 天梯赛 L2 - 023
图的遍历(邻接矩阵) - 图着色问题 - 天梯赛 L2 - 023题意:图着色问题是一个著名的NP完全问题。给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色?但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请你判断这是否是图着色问题的一个解。输入格式:输入在第一行给出3个整数V(0<V≤500)、E(≥0)和K(0<K≤V),分别是无向图的顶点数、边数、以及颜色数。顶点和颜色都从1到V编号。随后E行,每行给出一条原创 2020-11-27 21:11:42 · 618 阅读 · 0 评论 -
Tarjan(强连通分量缩点) - Mouse Hunt - CodeForces 1027D
Tarjan(强连通分量缩点) - Mouse Hunt - CodeForces 1027D题意:给定一个n个点,n条边的有向图,给定一个n个点,n条边的有向图,给定一个n个点,n条边的有向图,初始时,老鼠可能在任意点,初始时,老鼠可能在任意点,初始时,老鼠可能在任意点,接着老鼠将从点i到点ai,接着老鼠将从点i到点a_i,接着老鼠将从点i到点ai,在i点放置一个捕捉装置需要花费ci,在i点放置一个捕捉装置需要花费c_i,在i点放置一个捕捉装置需要花费ci,计算最少花费,能够确保抓住老鼠(原创 2020-07-31 18:58:54 · 196 阅读 · 0 评论 -
Tarjan(强连通分量) - Checkposts - CodeForces 427C
Tarjan(强连通分量) - Checkposts - CodeForces 427C题意:给定一个n个点,m条边的有向图,给定一个n个点,m条边的有向图,给定一个n个点,m条边的有向图,现在要在某些点上设置警察局,在i点设置警察局的代价为wi,现在要在某些点上设置警察局,在i点设置警察局的代价为w_i,现在要在某些点上设置警察局,在i点设置警察局的代价为wi,i点的警察局能够保护j点,当且仅当i和j之间能够双向到达(i能到j,j也能到i)。i点的警察局能够保护j点,当且仅当i和j之间能够双向到原创 2020-07-31 18:29:59 · 349 阅读 · 0 评论 -
BFS(环) - Subway - CodeForces 131D
BFS(环) - Subway - CodeForces 131D题意:给定一个n个点,n条边的无向图,给定一个n个点,n条边的无向图,给定一个n个点,n条边的无向图,整个图由一个环和多条链组成,整个图由一个环和多条链组成,整个图由一个环和多条链组成,输出所有的点到环的距离。(环上的点到环的距离为0,链上的边权为1.)输出所有的点到环的距离。(环上的点到环的距离为0,链上的边权为1.)输出所有的点到环的距离。(环上的点到环的距离为0,链上的边权为1.)输入:首行包括一个正整数n,首行包括一个正整原创 2020-07-31 17:45:16 · 204 阅读 · 0 评论 -
拓扑排序(差分约束) - NOIP 2013 车站分级 - 洛谷 P1983
拓扑排序 - NOIP 2013 车站分级 - 洛谷 P 1983一条单向的铁路线上,依次有编号为1, 2, …, n 的n个火车站。每个火车站都有一个级别,最低为1级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站x,则始发站、终点站之间所有级别大于等于火车站x的都必须停靠。(注意:起始站和终点站自然也算作事先已知需要停靠的站点)例如,下表是5趟车次的运行情况。其中,前4趟车次均满足要求,而第5趟车次由于停靠了3号火车站(2级)却未停靠途经的6号火车站(亦为2级)原创 2020-07-12 00:25:48 · 275 阅读 · 0 评论 -
拓扑排序(DP + bitset) - 可达性统计 - AcWing 164
拓扑排序(DP + bitset) - 可达性统计 - AcWing 164给定一张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 104 9输出样例:1633原创 2020-07-12 00:07:36 · 128 阅读 · 0 评论 -
拓扑排序(差分约束) - Reward - HDU 2647
拓扑排序(差分约束) - Reward - HDU 2647题意:格林剧团发工资的时候又到辣,格林剧团来到了圣巢,他们入乡随俗,将工资用圣巢的货币–吉欧来结算。格林团长决定每个人的最低工资是888吉欧,同时有些工人希望自己的工资要比其他某个人的高。格林团长希望在尽可能的少发工资的同时满足其他所有人的需求。请你帮帮格林团长吧,格林团长会邀请你与其在剧团内共舞一场猩红仪式。Input题目包含多组输入,第一行输入两个整数n,m,分别表示工人的数量与需求的个数。 接下来m行,每一行都包含两个整数a和b,表示原创 2020-07-11 23:44:19 · 288 阅读 · 0 评论 -
欧拉路径/并查集 - Play on Words - POJ 1386
文章目录欧拉路径/并查集 - Play on Words - POJ 1386方法一:欧拉路径:方法二:并查集:欧拉路径/并查集 - Play on Words - POJ 1386题意:有 N 个盘子,每个盘子上写着一个仅由小写字母组成的英文单词。你需要给这些盘子安排一个合适的顺序,使得相邻两个盘子中,前一个盘子上单词的末字母等于后一个盘子上单词的首字母。请你编写一个程序,判断是否能达到这一要求。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据第一行包含整数 N,表示盘子原创 2020-07-11 23:24:09 · 299 阅读 · 0 评论 -
欧拉路径 - 骑马修栅栏 Riding the Fences - 洛谷 P2731
欧拉路径 - 骑马修栅栏 Riding the Fences - 洛谷 P2731农民John每年有很多栅栏要修理。他总是骑着马穿过每一个栅栏并修复它破损的地方。John是一个与其他农民一样懒的人。他讨厌骑马,因此从来不两次经过一个栅栏。你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次。John能从任何一个顶点(即两个栅栏的交点)开始骑马,在任意一个顶点结束。每一个栅栏连接两个顶点,顶点用 1 到 500 标号(虽然有的农场并没有 500 个顶点)。原创 2020-07-11 23:13:34 · 84 阅读 · 0 评论 -
欧拉回路(输出路径) - 欧拉回路 - AcWing 1184
欧拉回路(输出路径) - 欧拉回路 - AcWing 1184给定一张图,请你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好一次。输入格式第一行包含一个整数 t,t∈{1,2},如果 t=1,表示所给图为无向图,如果 t=2,表示所给图为有向图。第二行包含两个整数 n,m,表示图的结点数和边数。接下来 m 行中,第 i 行两个整数 vi,ui,表示第 i 条边(从 1 开始编号)。如果 t=1 则表示 vi 到 ui 有一条无向边。如果 t=2 则表示 vi 到 ui 有一条有向边。原创 2020-07-11 23:07:12 · 983 阅读 · 0 评论 -
欧拉回路 - 铲雪车 - AcWing 1123
欧拉回路 - 铲雪车 - AcWing 1123随着白天越来越短夜晚越来越长,我们不得不考虑铲雪问题了。整个城市所有的道路都是双向车道,道路的两个方向均需要铲雪。因为城市预算的削减,整个城市只有 1 辆铲雪车。铲雪车只能把它开过的地方(车道)的雪铲干净,无论哪儿有雪,铲雪车都得从停放的地方出发,游历整个城市的街道。现在的问题是:最少要花多少时间去铲掉所有道路上的雪呢?输入格式输入数据的第 1 行表示铲雪车的停放坐标 (x,y),x,y 为整数,单位为米。下面最多有4000行,每行给出了一条街道原创 2020-07-11 20:46:42 · 282 阅读 · 0 评论 -
匈牙利算法(最小路径点覆盖) - 捉迷藏 - AcWing 379
匈牙利算法(最小路径点覆盖) - 捉迷藏 - AcWing 379Vani和cl2在一片树林里捉迷藏。这片树林里有N座房子,M条有向道路,组成了一张有向无环图。树林里的树非常茂密,足以遮挡视线,但是沿着道路望去,却是视野开阔。如果从房子A沿着路走下去能够到达B,那么在A和B里的人是能够相互望见的。现在cl2要在这N座房子里选择K座作为藏身点,同时Vani也专挑cl2作为藏身点的房子进去寻找,为了避免被Vani看见,cl2要求这K个藏身点的任意两个之间都没有路径相连。为了让Vani更难找到自己,c原创 2020-07-10 23:21:07 · 361 阅读 · 0 评论 -
匈牙利算法(最大独立集) - 骑士放置 - AcWing 378
匈牙利算法(最大独立集) - 骑士放置 - AcWing 378给定一个 N*M 的棋盘,有一些格子禁止放棋子。问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的“骑士”,类似于中国象棋的“马”,按照“日”字攻击,但没有中国象棋“别马腿”的规则)。输入格式第一行包含三个整数N,M,T,其中T表示禁止放置的格子的数量。接下来T行每行包含两个整数x和y,表示位于第x行第y列的格子禁止放置,行列数从1开始。输出格式输出一个整数表示结果。数据范围1≤N,M≤1001≤N,M≤1001≤N,M≤1原创 2020-07-10 23:10:46 · 261 阅读 · 0 评论 -
匈牙利算法(最小点覆盖) - Machine Schedule - POJ 1325
匈牙利算法(最小点覆盖) - Machine Schedule - POJ 1325题意:有两台机器 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-07-10 22:21:25 · 194 阅读 · 0 评论 -
染色法(二分图) + 二分 - NOIP 2010 关押罪犯 - 洛谷 P1525
染色法(二分图) + 二分 - NOIP 2010 关押罪犯 - 洛谷 P1525S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为 c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为 c 的冲突事件。每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到原创 2020-07-10 22:02:51 · 162 阅读 · 0 评论 -
匈牙利算法(二分图最大匹配) - 棋盘覆盖 - AcWing 372
匈牙利算法(二分图最大匹配) - 棋盘覆盖 - AcWing 372给定一个N行N列的棋盘,已知某些格子禁止放置。求最多能往棋盘上放多少块的长度为2、宽度为1的骨牌,骨牌的边界与格线重合(骨牌占用两个格子),并且任意两张骨牌都不重叠。输入格式第一行包含两个整数N和t,其中t为禁止放置的格子的数量。接下来t行每行包含两个整数x和y,表示位于第x行第y列的格子禁止放置,行列数从1开始。输出格式输出一个整数,表示结果。数据范围1≤N≤1001≤N≤1001≤N≤100输出样例:8 0输出原创 2020-07-10 21:40:03 · 338 阅读 · 0 评论 -
Tarjan(割点) - Electricity - POJ 2117
Tarjan(割点) - Electricity - POJ 2117题意:给定一个由 n 个点 m 条边构成的无向图,请你求出该图删除一个点之后,连通块最多有多少。输入格式输入包含多组数据。每组数据第一行包含两个整数 n,m。接下来 m 行,每行包含两个整数 a,b,表示 a,b 两点之间有边连接。数据保证无重边。点的编号从 0 到 n−1。读入以一行 0 0 结束。输出格式每组数据输出一个结果,占一行,表示连通块的最大数量。数据范围1≤n≤10000,0≤m≤15000,0≤a原创 2020-07-10 12:00:37 · 172 阅读 · 0 评论 -
Tarjan(边的双连通分量) - Redundant Paths - POJ 3177
Tarjan(边的双连通分量) - Redundant Paths - POJ 3177为了从F个草场中的一个走到另一个,奶牛们有时不得不路过一些她们讨厌的可怕的树。奶牛们已经厌倦了被迫走某一条路,所以她们想建一些新路,使每一对草场之间都会至少有两条相互分离的路径,这样她们就有多一些选择。每对草场之间已经有至少一条路径。给出所有R条双向路的描述,每条路连接了两个不同的草场,请计算最少的新建道路的数量,路径由若干道路首尾相连而成。两条路径相互分离,是指两条路径没有一条重合的道路。但是,两条分离的路原创 2020-07-10 00:31:50 · 275 阅读 · 0 评论 -
Tarjan(强连通分量缩点) - SCOI 2011 - 糖果 - 洛谷 P3275
Tarjan(强连通分量缩点) - SCOI 2011 - 糖果 - 洛谷 P3275幼儿园里有 N 个小朋友,老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候, 老师需要满足小朋友们的 K 个要求。幼儿园的糖果总是有限的,老师想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求。输入格式输入的第一行是两个整数 N,K。接下来 K 行,表示原创 2020-07-09 20:38:44 · 213 阅读 · 0 评论 -
Tarjan(强连通分量缩点) - ZJOI 2007 最大半连通子图 - 洛谷 P2272
Tarjan - ZJOI 2007 最大半连通子图 - 洛谷 P2272一个有向图 G=(V,E) 称为半连通的 (Semi-Connected),如果满足:∀u,v∈V,满足 u→v 或 v→u,即对于图中任意两点 u,v,存在一条 u 到 v 的有向路径或者从 v 到 u 的有向路径。若 G′=(V′,E′) 满足,E′ 是 E 中所有和 V′ 有关的边,则称 G′ 是 G 的一个导出子图。若 G′ 是 G 的导出子图,且 G′ 半连通,则称 G′ 为 G 的半连通子图。若 G′ 是 G 所有原创 2020-07-09 20:16:54 · 113 阅读 · 0 评论 -
Tarjan(强连通分量缩点) - Network of Schools - POJ 1236
Tarjan(强连通分量缩点) - Network of Schools - POJ 1236一些学校连接在一个计算机网络上,学校之间存在软件支援协议,每个学校都有它应支援的学校名单(学校A支援学校B,并不表示学校B一定要支援学校A)。当某校获得一个新软件时,无论是直接获得还是通过网络获得,该校都应立即将这个软件通过网络传送给它应支援的学校。因此,一个新软件若想让所有学校都能使用,只需将其提供给一些学校即可。现在请问最少需要将一个新软件直接提供给多少个学校,才能使软件能够通过网络被传送到所有学校?原创 2020-07-09 18:53:19 · 133 阅读 · 0 评论 -
Tarjan(强连通分量缩点) - Popular Cows - POJ 2186
Tarjan(强连通分量缩点) - Popular Cows - POJ 2186题意:每一头牛的愿望就是变成一头最受欢迎的牛。现在有 N 头牛,编号从 1 到 N,给你 M 对整数 (A,B),表示牛 A 认为牛 B 受欢迎。这种关系是具有传递性的,如果 A 认为 B 受欢迎,B 认为 C 受欢迎,那么牛 A 也认为牛 C 受欢迎。你的任务是求出有多少头牛被除自己之外的所有牛认为是受欢迎的。输入格式第一行两个数 N,M;接下来 M 行,每行两个数 A,B,意思是 A 认为 B 是受欢迎的(原创 2020-07-09 18:25:25 · 137 阅读 · 0 评论 -
LCA(倍增) - Network - POJ 3417
LCA(倍增) - Network - POJ 3417题意:给定一个n个点的树,和m条附加边(加入后树中会形成环)的图。给定一个n个点的树,和m条附加边(加入后树中会形成环)的图。给定一个n个点的树,和m条附加边(加入后树中会形成环)的图。现在可去掉一条树边(树中的边)和附加边,使得整个树被一分为二。现在可去掉一条树边(树中的边)和附加边,使得整个树被一分为二。现在可去掉一条树边(树中的边)和附加边,使得整个树被一分为二。计算一共有多少划分的方案。计算 一共有多少划分的方案。计算一共有多少划分的方原创 2020-07-09 11:58:24 · 118 阅读 · 0 评论 -
LCA(倍增) - 次小生成树 - AcWing 356
LCA(倍增) - 次小生成树 - AcWing 356给定一张 N 个点 M 条边的无向图,求无向图的严格次小生成树。设最小生成树的边权之和为sum,严格次小生成树就是指边权之和大于sum的生成树中最小的一个。输入格式第一行包含两个整数N和M。接下来M行,每行包含三个整数x,y,z,表示点x和点y之前存在一条边,边的权值为z。输出格式包含一行,仅一个数,表示严格次小生成树的边权和。(数据保证必定存在严格次小生成树)数据范围N≤105,M≤3×105N≤10^5,M≤3×10^5N≤105原创 2020-07-09 00:32:50 · 176 阅读 · 0 评论 -
LCA(tarjan) - 距离 - AcWing 1171
LCA - 距离 - AcWing 1171给出 n 个点的一棵树,多次询问两点之间的最短距离。注意:边是无向的。所有节点的编号是 1,2,…,n。输入格式第一行为两个整数 n 和 m。n 表示点数,m 表示询问次数;下来 n−1 行,每行三个整数 x,y,k,表示点 x 和点 y 之间存在一条边长度为 k;再接下来 m 行,每行两个整数 x,y,表示询问点 x 到点 y 的最短距离。树中结点编号从 1 到 n。输出格式共 m 行,对于每次询问,输出一行询问结果。数据范围2≤n原创 2020-07-09 00:17:36 · 254 阅读 · 0 评论 -
LCA(倍增法) - 祖孙询问 - AcWing 1172
LCA(倍增法) - 祖孙询问 - AcWing 1172给定一棵包含 n 个节点的有根无向树,节点编号互不相同,但不一定是 1∼n。有 m 个询问,每个询问给出了一对节点的编号 x 和 y,询问 x 与 y 的祖孙关系。输入格式输入第一行包括一个整数 表示节点个数;接下来 n 行每行一对整数 a 和 b,表示 a 和 b 之间有一条无向边。如果 b 是 −1,那么 a 就是树的根;第 n+2 行是一个整数 m 表示询问个数;接下来 m 行,每行两个不同的正整数 x 和 y,表示一个询问。输原创 2020-07-08 23:37:07 · 191 阅读 · 0 评论 -
染色法(判定二分图) + 匈牙利算法(求二分图的最大匹配)
染色法(判定二分图) + 匈牙利算法(求二分图的最大匹配)文章目录染色法(判定二分图) + 匈牙利算法(求二分图的最大匹配)1、染色法(判定二分图)2、匈牙利算法(求二分图的最大匹配)1、染色法(判定二分图)给定一个n个点m条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。输入格式第一行包含两个整数n和m。接下来m行,每行包含两个整数u和v,表示点u和点v之间存在一条...原创 2020-04-27 14:07:26 · 477 阅读 · 0 评论 -
DFS(树的直径)-第四届蓝桥杯省赛C++A组-大臣的旅费
DFS(树的直径)-第四届蓝桥杯省赛C++A组-大臣的旅费题目:很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。J是T国重要大臣,他巡查于各大城市之...原创 2020-02-29 13:58:20 · 236 阅读 · 0 评论 -
单链表的数组实现
单链表的数组实现题目:实现一个单链表,链表初始为空,支持三种操作:(1) 向链表头插入一个数;(2) 删除第k个插入的数后面的数;(3) 在第k个插入的数后插入一个数现在要对该链表进行M次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作过程中一共插入了n个数,则按照插入的时间顺序,这n个数依次为:第1个插入的数,第2个插入的...原创 2020-02-29 13:08:03 · 1800 阅读 · 0 评论 -
图论(环)-蓝桥杯省赛C++B组-交换瓶子
图论(环)-蓝桥杯省赛C++B组-交换瓶子题目:有 N 个瓶子,编号 1∼N,放在架子上。比如有 5 个瓶子:2 1 3 5 4要求每次拿起 2 个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1 2 3 4 5对于这么简单的情况,显然,至少需要交换 2 次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式第一行包含一个整数 N,表示瓶子数量。第二行包含 N...原创 2020-02-28 01:18:15 · 540 阅读 · 0 评论