
图论
文章平均质量分 77
Interstellar_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ3169 Layout (差分约束)
Layout Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10022 Accepted: 4807 Description Like everyone else, cows like to stand close to their friends when转载 2016-07-30 10:47:13 · 480 阅读 · 0 评论 -
POJ 3723 Conscription(并查集+最小生成树)
题目链接:https://cn.vjudge.net/problem/POJ-3723 大意:需要招募女兵N人,男兵M人。每招募一个人需要花费10000美元。但是如果已经招募的人中有一些关系亲密的人,那么可以少花一些钱(10000-亲密值)。给出若干男女之间的亲密关系,求招募所有人的最小费用。(招募每个人时只能用一条关系) 思路:将人看做点(N+M个点),关系看作边,边权为亲密值的相反数。首先原创 2017-01-25 11:07:38 · 421 阅读 · 0 评论 -
POJ 3281 Dining (最大流)
Dining Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17065 Accepted: 7562 Description Cows are such finicky eaters. Each cow has a preference for certain原创 2017-03-12 10:03:06 · 359 阅读 · 0 评论 -
HDU 5544 Ba Gua Zhen (DFS找环+线性基)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5544 题目大意:给出一个无向连通图,求一个回路,使得该回路中所有路径权值的亦或最大(某条边经过几次,则亦或几次) 思路:首先找出图中所有的独立环,所谓独立环,就是不能由其它环线性表示出的环。易知,回路是由若干个独立环线性组合而成的。那么我们可以求出每个独立环的亦或值,存到数组中,那原创 2017-04-07 20:21:07 · 742 阅读 · 0 评论 -
UVa 11324 The Largest Clique (强连通分量,dp)
题目链接:https://vjudge.net/problem/UVA-11324 题意:给一张有向图G,求一个节点数最大的结点集,使得该结点集中任意两个结点u和v满足:要么u可以到达v,要么v可以到达u(或者u和v相互可达) 思路:首先求出图的强连通分量,并把其收缩点得到scc图,每个scc结点权值为它的节点数。则问题转化成了,给出一个DAG图,各点权值已知,求一条权值最大的路径,可以用dp原创 2017-03-14 15:40:19 · 446 阅读 · 0 评论 -
HDU 3062 Party (2-SAT)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062 题意:中文题目,题意就不太用说了。 思路:根据公式┓(a∧b) = ┓a ∨ ┓b 将与关系转化为非关系,然后套用2-SAT模板即可。 #include #include #include #include #include #include #include #include #原创 2017-03-14 16:42:01 · 361 阅读 · 0 评论 -
UVa 1146 Now or Later (2-SAT)
题目链接:https://vjudge.net/problem/UVA-1146 题意:有n架飞机需要登陆。每架飞机可以选择“早着陆”和“晚着陆”两种方式,且必须选择一种。第i架飞机早着陆时间为Ei,晚着陆时间为Li,不得在其他时间着陆。求:在把所有飞机按照实际着陆时间从早到晚排好序的情况下,相邻两个着陆时间间隔的最小值最大是多少。 思路:最大化最小值,可以用二分来求解。则可以把问题转化为,任原创 2017-03-14 19:50:28 · 539 阅读 · 0 评论 -
POJ 1094 Sorting It All Out (拓扑排序,有向图判环)
题目链接:http://poj.org/problem?id=1094 思路:因为要找第一个满足拓扑排序的或是有环的,所以要从第一个输入就开始判断。这里要注意一点,如果判断时发现有环了,那么后面都不用管了,答案就是有环;如果判断时发现满足拓扑排序了,那么后面也不用管了(不管后面有没有和前面形成环),答案就是满足拓扑。 先判断环,再判断拓扑排序比较方便。判环时,可以用DFS,方法原创 2017-03-16 15:54:56 · 485 阅读 · 0 评论 -
CodeForces 160D Edges in MST (tarjan)
题目链接:http://codeforces.com/problemset/problem/160/D 题意:给出一个n个点m条边(无自环无重边)的无向图,求问它的所有最小生成树中:哪些边在所有最小生成树中都出现、那些可能出现、那些都不出现。 思路:首先有一个结论:把一个连通无向图的生成树的边按权值递增排序,称排好序的边权列表为有序边权列表,则任意两棵最小生成树的有序边权列表是相同的。因此,借原创 2017-04-12 21:39:12 · 550 阅读 · 0 评论 -
HDU 5545 The Battle of Guandu (最短路Dijkstra)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5545 题目大意:有n个村庄,m个战场。对于村庄i,曹操可以支付c[i]*num元,使得这个村庄派遣num个士兵去战场x[i]为曹操作战,同时,这个村庄也会派遣num个士兵去战场y[i]为袁绍作战。 对于每个战场,有3种重要度(0,1,2)。原创 2017-04-06 20:40:09 · 751 阅读 · 0 评论 -
HDU 4115 Eliminate the Conflict (2-SAT)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4115 题意:Alice和Bob在玩剪刀石头布,Alice知道Bob每轮出什么。现在给Alice若干组限制(A B K),若K为1,则代表Alice第A轮和第B轮不能出的一样,若A为0,则代表Alice第A轮和第B轮出的必须一样。问在这些限制下,Alice是否能赢。(赢的定义是在任意一轮都不能输(即任原创 2017-07-23 21:15:47 · 425 阅读 · 0 评论 -
UVa 1664 (Conquer a New Region) 并查集
题目链接:https://cn.vjudge.net/problem/UVA-1664 题意:n个城市形成一棵树,每条边有权值C(i, j)。任意两个点的容量S(i, j)定义为i与j唯一通路容量上的最小值。找一个点(他将成为中心城市),使得它到其他所有点的容量之和最大。 思路:很巧妙地并查集维护问题。首先把所有边按照权值从大到小排序,这样可以确保我们每次选出的边都比已选出的小原创 2017-07-25 08:55:57 · 394 阅读 · 0 评论 -
POJ 3268 Silver Cow Party (Dijkstra算法)
题目链接:https://vjudge.net/problem/POJ-3268 大意:给你个有向图,再给你个点,求图中某个点i到该点的最短路与该点到点i的最短路的和的最大值。 思路:求一个点到其他所有点的最短距离,这很简单,就是单源最短路问题。若是求其他所有点到某个点的最短距离呢,难道还要对每个点调用一次Dijkstra吗,当然没有必要。不难发现,这个过程就是单元最短路的逆过程。我们原创 2017-01-11 16:04:48 · 296 阅读 · 0 评论 -
POJ 3259 Wormholes (Bellman Ford判负环)
题目链接:https://vjudge.net/problem/POJ-3259 Bellman Ford可以用来判断图中是否存在负环。首先,将所有点的dis设为零,执行n次松弛操作,若第n次仍有点被更新,则图中存在负环。 bool negative_loop(int n) { memset(dis, 0, sizeof dis); for(int i = 0; i < n; i++)原创 2017-01-11 09:50:35 · 360 阅读 · 0 评论 -
HDU 5441 Travel (离线处理+并查集)
Travel Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 2914 Accepted Submission(s): 998 Problem Description Jack likes to travel a原创 2016-08-02 09:38:50 · 655 阅读 · 0 评论 -
HDU 4496 D-City(逆向)
D-City Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 3270 Accepted Submission(s): 1169 Problem Description Luxer is a really bad g原创 2016-08-02 20:15:22 · 381 阅读 · 0 评论 -
UVa 1001 Say Cheese (Floyd)
题目链接:http://acm.hust.edu.cn/vjudge/problem/35891 大体题意:给出n个球形洞的坐标和半径,以及小老鼠A和B的坐标,问小老鼠A最快多长时间能到达B的位置。 思路:原创 2016-08-17 19:52:00 · 935 阅读 · 0 评论 -
UVa 658 It's not a Bug, it's a Feature!(最短路问题)
题目链接:http://acm.hust.edu.cn/vjudge/problem/22169 大体思路:按照刘汝佳的思路来的,把各个bug的状态(用一个二进制串来表示)当作结点,当前状态到下一状态当作边,然后套用dijkstra算法即可。在寻找边时,直接枚举所有补丁,看看哪个能打上,把打上之后的状态求出来,然后不断更新新状态,当出现0时(即所有bug都消失时),即退出。 #include原创 2016-08-17 09:38:39 · 426 阅读 · 0 评论 -
UVa 1151 Buy or Build (最小生成树)
题目链接:http://acm.hust.edu.cn/vjudge/problem/36013 题目大意:给你n个点,你的任务是让这n个点连通。为此,你有两种方法,1、在某两点之间建边,费用为两点之间欧几里得距离的平方。2、购买一些套餐,当买了某个套餐后,套餐中的这些点将变得相互连通,问完成任务的最小费用是多少。 思路:若直接枚举套餐,再求最小生成树,肯定会超时。所以,按刘汝佳说的那样,先求原创 2016-08-06 09:56:21 · 585 阅读 · 0 评论 -
UVa 1395 Slim Span (最小生成树)
题意:给出一个n结点的图,求一棵生成树,使其最大边减最小边最小,并求出最小值。 思路:将所有边排序,然后暴力求最小生成树即可。 #include #include #include #include #include using namespace std; const int maxn = 10000; const int INF = 1e9 + 10; int n, m; int pre原创 2016-08-02 10:46:51 · 432 阅读 · 0 评论 -
UVALive 6811 Irrigation Lines(匈牙利算法)
题目链接:http://acm.hust.edu.cn/vjudge/problem/73800 题意:给出若干行01串,每次可以消掉一行1或一列1,问最少几次能把所有的1消完。 思路: 我们可以把每一行看做X点集中的一个点,每一列看做Y点集中的一个点,如果第i行第j列为1,就从X点集中的对应的点i向Y点集中的点j连一条边。这样问题就转化成了,给 出一个二分图,用原创 2016-08-25 10:47:00 · 423 阅读 · 0 评论 -
UVa 753 A Plug for UNIX (二分图匹配)
题目链接:http://vjudge.net/problem/UVA-753 把设备和插座分别看作二分图的左边和右边的点,则问题转换成了求二分图的最大匹配数。因为一个设备的插头类型可以经转换器变成另一种从而可以接到别的插座上,因此先用一遍Floyd算法求出两个插头间是否可以转化,对于能转化的,即从该设备向该插座连一条边。最后的答案为设备数减最大匹配数。 #includ原创 2016-10-09 15:28:48 · 319 阅读 · 0 评论 -
UVa 11082 Matrix Decompressing (最大流问题)
题目链接:http://vjudge.net/problem/UVA-11082 题意:构造一个r行c列的矩阵,满足前i行元素之和为Ai,前i列元素之和为Bi。 好巧妙的思路,怎么也想不到是网络流问题,看来还是太菜啊。 设每一行之和为R[i],每一列之和为C[i]。建一个二分图,每行对应一个X结点,每列对应一个Y结点。然后建立源点s和汇点t,原创 2016-10-09 20:18:06 · 452 阅读 · 0 评论 -
UVALive 3645 Objective: Berlin (最大流,拆点法)
题目链接:http://vjudge.net/contest/138956#problem/B 把每条航线看做一个点,因为每条航线涉及两个时间点,所以把每个点拆成两个(u和u'),分别对应较早的和较晚的那个时间,之间连一条弧,容量为该航线的载客量。若航线i可以与航线j相连,则将航线i的u'向航线j的u之间连一条弧,容量为无穷大。并增加源点s和汇点t,由s向每个出发点(u)连原创 2016-10-31 20:09:19 · 557 阅读 · 0 评论 -
UVa 1658 Admiral (最小费用最大流、拆点法)
题目链接:http://vjudge.net/problem/UVA-1658 题意:给出n个点m条边,求1-n的两条不相交的路径(除1和n外,每个点仅经过一次),使得路径总权值最小。 思路:除起点终点外,每个点仅经过一次,这就限制了结点的经过次数。为了达到这个效果,我们把除起点终点外每个点u拆成u和u',中间连一条容量为1、费用为0的弧,这样原来u-v的弧就变成了u-u'-v原创 2016-11-02 20:59:30 · 622 阅读 · 0 评论 -
UVa 12118 Inspector's Dilemma (欧拉道路)
题目链接:https://cn.vjudge.net/problem/UVA-12118 大意:给出一个V结点的图,每两点之间都有一条双向道路相连,长度为T。现要找一条最短的道路,使得该道路经过E条指定的边。 思路:本题可以转化为,已知E条边,现要增加尽量少的边,使它们和这E条边组成欧拉通(回)路。因为图不一定连通,所以要想满足要求,每个连通块都要设法将其变成欧拉通(回)路,具原创 2017-07-26 08:44:38 · 618 阅读 · 0 评论