
[T]图论
文章平均质量分 79
GooZy
程序宅一枚。没事写写代码,打打游戏,看看动漫~
展开
-
[AOJ 2170]Marked Ancestor[并查集][离线][路径压缩]or[线段树]
题目链接:[AOJ 2170]Marked Ancestor[并查集][离线][路径压缩]or[线段树]题意分析:结点1为根结点,初始时已经染过颜色。给出N - 1行,第i行代表第i + 1个结点的父亲结点是哪个结点。现在给出最多1e5个结点,1e5个查询。查询操作分两种,Q X代表查询结点X的最近的被染色的父或者祖先结点被染色的编号,M X代表对结点X染色。问:所有查询完之后,Q原创 2016-01-15 23:12:29 · 880 阅读 · 0 评论 -
[POJ 3295]Tautology[构造][DFS]
题目链接:[POJ 3295]Tautology[构造][DFS]题意分析:给出一个表达式,问:这个表达式是否是永真的?是的话,输出“tautology”,否则“not”。其中变量最多有5个,代表字母为:p q r s t大写字母:K-与,A-或,N-否,C-蕴含,E-相等解题思路:变量最多五个,那么就把所有情况都枚举一遍。解析表达式,使用dfs进行扫描,直到扫描到小写字母原创 2016-01-12 09:59:33 · 476 阅读 · 0 评论 -
[POJ 3026]Brog Maze[存疑!!!!!]
题目链接:[POJ 3026]Brog Maze[存疑!!!!!]题意分析:从S点出发,将所有的A点抓住,要求抓住这些A点所用的距离消耗最少。在抓住这些点的过程中可以进行分裂去抓,消耗是只计算路过的地面距离。样例一解决方案:样例二解决方案:存疑:认真数数上面的点,发现样例一图上有8个点,样例二图上有12个点。和标准输出不符合。假设S点不计入计算,那么原创 2016-01-30 10:31:34 · 445 阅读 · 0 评论 -
[HDU 3416]Marriage Match IV[最大流][最短路]
题目链接:[HDU 3416]Marriage Match IV[最大流][最短路]题意分析:求从A城市到B城市的最短路径有多少条,边不能重复。解题思路:跑一遍最短路,把A城市到各个城市的最短路确定了,然后根据dis[v] == dis[u] + edge[j].cost来确定哪些路是在最短路上的,在其上的边,容量为1,不在的边,容量为0,然后跑一遍最大流即可。注意反向边容量先设为原创 2016-03-15 19:18:57 · 518 阅读 · 0 评论 -
[UVA 11324]The Largest Clique[SCC][缩点]
题目链接:[UVA 11324]The Largest Clique[SCC][缩点]题意分析:找到最多的节点集合,使得集合内任意两个点之间都有一条路径使得u->v或者v->u。输出该集合的结点个数。解题思路:有向图中,强连通分量中的点肯定是互相可达的,所以选择了其中的一个点,必定连通分量中其它的点也要选择,所以我们可以把这些点看作同一个点进行缩点。那么原问题就变成,从图中找一原创 2016-03-04 00:24:04 · 483 阅读 · 0 评论 -
[POJ 2516]Minimum Cost[费用流][建图]
题目链接:[POJ 2516]Minimum Cost[费用流][建图]题意分析:N个店主,M个供货商,K种货物,每个店主都有自己需要的货物数量,每个供货商都会提供一定数量的货物,每个供货商给店主提供不同货物的单位价格不同,现在问题来了:供货商如何花费最少的费用给店主提供上货物呢?最少费用是多少?无法满足要求则输出-1。解题思路:这题如果将店主的需要货物拆点,供货商的提供货物拆点,原创 2016-03-17 00:40:17 · 535 阅读 · 0 评论 -
[HDU 3572]Task Schedule[最大流]
题目链接:[HDU 3572]Task Schedule[最大流]题意分析:N个任务,每个只能在si之后开始执行,得执行pi天,在ei天前得执行完,有M个机器进行作业,问:能否在每个的规定时间之内,把所有任务执行完?任务可以中断执行,比如第一天做,第二天休息,第三天做。解题思路:我们将每天视为一个点,那么第i个任务可以在si到ei之间执行,那么说明这个任务可以和[si,ei]之间的原创 2016-03-18 00:30:32 · 527 阅读 · 0 评论 -
[HDU 2883]kebab[最大流][区间离散化]
题目链接:[HDU 2883]kebab[最大流][区间离散化]题意分析:N个客人,第i个在时间si到达,ei离开,点了ni份烤肉,每份需要ti的时间烤熟,厨师每分钟最多烤M块肉,客人需要在ei时间前拿到烤肉,问:厨师是否能满足所有客人的需求?解题思路:si和ei的区间范围灰常大= =,考虑将区间离散化。源点和客人i连一条ni*ti的边,客人和自己规定时间范围内的离散后区间连一条I原创 2016-03-18 10:10:34 · 497 阅读 · 0 评论 -
[POJ 3083]Children of the Candy Corn[DFS+BFS]
题目链接:[POJ 3083]Children of the Candy Corn[DFS+BFS]题意分析:从起点S到终点E,贴着左边的墙壁走需要几步?贴着右边的墙壁走需要走几步?直接走最短路需要几步?请全部输出来。解题思路:第三项用BFS求最短路即可。主要是前两项。首先自己模拟一下如果让你贴着墙壁走你会怎么走?然后根据自己的逻辑编写DFS即可。贴左边和贴右边差不多,改改就行。另原创 2016-03-30 00:03:23 · 589 阅读 · 0 评论 -
[POJ 3020]Antenna Placement[二分图最小路径覆盖]
题目链接:[POJ 3020]Antenna Placement[二分图最小路径覆盖]题意分析:给出一副图,*代表需要被天线覆盖地区,o代表空白部位,每次覆盖可以覆盖一个点和这个点的上下左右四个方向之一的一个点,问覆盖完所有的点,最少要覆盖多少次?解题思路:地图大小40 * 10。我们可以将需要覆盖的地区编号,和这个地区有连接的需要覆盖的地区之间连一条线,进行二分图匹配,由于每个点原创 2016-01-26 16:31:17 · 813 阅读 · 0 评论 -
[UVA 10441]Catenyms[欧拉路]
题目链接:[UVA 10441]Catenyms[欧拉路]题意分析:给出一组单词,问能否将他们首尾相连串成一个串,每个单词都得出现一次。解题思路:将单词首字母作为边的起始,尾字母作为边终点,建立有向图。原题就变成了判断图中是否存在欧拉通路或者欧拉回路,最后判一遍联通性即可。欧拉图图相关姿势推荐博文:13、弗罗莱(Fleury)算法,求欧拉(Euler)通路/回路本题用到姿势原创 2015-12-06 14:10:32 · 621 阅读 · 0 评论 -
[POJ 3169]Layout[差分约束][最短路]
题目链接:[POJ 3169]Layout[差分约束][最短路] 题意分析: 牛儿们互相间有喜欢双方的,也有讨厌双方的。互相喜欢的,希望离得尽量近,互相讨厌的,希望离得尽量远,问:能否根据要求把牛儿们排成一行?如果能,请输出1到N的最大距离(如果为无穷输出『-2』),否则,输出『-1』。 解题思路: a喜欢b,那么dis(a,b)<=cdis(a, b) <= c,a讨厌b,那么dis(a,原创 2015-10-25 02:01:31 · 552 阅读 · 0 评论 -
[POJ3723]Conscription[并查集][kruskal]
题目链接:[POJ3723]Conscription[并查集][kruskal]第一次做并查集的题目,其实之前我连什么是并查集豆不知道TAT今儿一天就混这两个概念了,mark下。代码中有些注释,诸君请便。关于并查集的理解,推荐一篇博文:快点我~~具体代码如下:#include #include #include #include using namespace st原创 2015-04-09 23:41:31 · 650 阅读 · 0 评论 -
[AOJ 2249]Road Construction[dijkstra]
题目链接:[AOJ 2249]Road Construction[dijkstra]题意分析:N个点,M条边的一张图,给出每条边的距离,和建边的消耗。现在问:保持图中结点1到其它点的最短距离不变,删除掉一些边,那么构建出整张图所需要的消耗最少为多少?解题思路:dijkstra在寻找答案的时候我们可以用一个cost数组,记录这个结点入边的最小消耗,最终将最小消耗相加就是我们要求的答案原创 2016-01-16 20:26:50 · 597 阅读 · 0 评论 -
[POJ 3255]Roadblocks[dijkstra][次短路]
题目链接:[POJ 3255]Roadblocks[dijkstra][次短路]题意分析:求点1到点N的次短路。次短路为比最短路小但不小于其它路的路,允许反复通过一条路。解题思路:定义两个数组dis1和dis2分别记录最短路和次短路,然后在dijkstra的时候,将两者一同更新即可。然后注意转移的时候是使用优先队列中的距离来更新,因为这里面的距离是随着弹出点代表的次短还是最短中原创 2016-01-16 21:10:04 · 750 阅读 · 0 评论 -
[HDU 3848]CC On The Tree[dfs]
题目链接:[HDU 3848]CC On The Tree[dfs]题意分析:求树上任意两个叶子结点之间距离的最小值。解题思路:考虑从树上任意一个非叶子结点开始dfs遍历,求出距离该点最短和次短的两个叶子节点,更新答案:ans = min(ans, 最短 + 次短)。如果每一个都这样求很容易就超时了,可以发现,之前的结果可以接着用,比如新结点遍历到了之前已经遍历过的结点,那么只要返原创 2016-01-03 11:12:44 · 446 阅读 · 0 评论 -
[POJ 1094]Sorting It All Out[拓扑排序]
题目链接:[POJ 1094]Sorting It All Out[拓扑排序]题意分析:给出字母表中的前N个大写字母和它们之间的M个比较关系,问:从哪句话起能够确定所有关系?或者从哪句话起出现矛盾?或者自始自终不能确定相互关系?解题思路:确定大小关系,自然能联想到拓扑排序,那么如何拓扑才能满足条件呢?我们每新增一句话就对当前已知条件进行一次拓扑排序,根据处理结果返回值。0:代表原创 2016-01-20 00:53:05 · 605 阅读 · 0 评论 -
[HDU 4263]Red/Blue Spanning Tree[kruskal]
题目链接:[HDU 4263]Red/Blue Spanning Tree[kruskal]题意分析:n个点,m条边,每条边染色为红色或者蓝色,问:是否存在含有k条蓝色边的生成树?是,输出1,否,0。解题思路:kruskal算法在生成最小生成树时使用了并查集思想,这题只要求生成一棵生成树,不用想排序之类的事。优先蓝边做一次生成树,此时使用的蓝边个数为mx;接着优先红边,接着蓝边做一原创 2016-01-03 23:13:46 · 643 阅读 · 0 评论 -
[UVA 10615]Rooks[二分图匹配]
题目链接:[UVA 10615]Rooks[二分图匹配]题意分析:给图中的每个'*'都涂上颜色,使得任意一行任意一列颜色都不重复,输出需要的最少颜色数,并输出解决方案。解题思路:很容易能看出,最长连续的*长度就是最少需要的颜色数了,虽然我并不知道为什么。剩下的就是怎么输出匹配方案数了,我们将每个*点的行和列连一条边构成二分图,然而这样还有个bug,就是会出现失匹配的情况,所原创 2015-12-06 23:50:44 · 1087 阅读 · 0 评论 -
[POJ 2531]Network Saboteur[DFS]
题目链接:[POJ 2531]Network Saboteur[DFS]题意分析:将N个点的无向图分成两个部分,使得两部分之间连边的权值和最大。解题思路:2^N个状态,1e6大概,直接dfs枚举所有状态,设置一个数组in代表点属于哪个部分。不过计算权值和的时候明明是On啊,总最大复杂度,应该是2e7。个人感受:不知道为什么被归到了搜索优化剪枝专题里面= =,AC后强行好奇怎原创 2016-03-30 01:12:17 · 562 阅读 · 0 评论 -
[POJ 3278]Catch That Cow[BFS]
题目链接:[POJ 3278]Catch That Cow[BFS]题意分析:农夫每次可以向左或者向右走,或者跳跃到当前位置的两倍位置上。问:最少几次操作可以到达奶牛的K位置解题思路:从起点BFS即可。注意边界条件和访问标记量。个人感受:虽然简单,还是ME+WA。ME是因为忘记标记访问量,WA是因为边界上的2*X具体代码如下:#include#include#i原创 2016-03-30 01:46:12 · 532 阅读 · 0 评论 -
[HDU 3635]Dragon Balls[并查集][路径压缩]
题目链接:[HDU 3635]Dragon Balls[并查集][路径压缩]题意分析:'T‘操作,代表将A龙珠所在城市的所有龙珠转移到B龙珠所在的城市。’Q‘操作,查询A龙珠所在的城市,该城市的龙珠数和A龙珠总共转移了多少次。解题思路:我们使用并查集,将在同一个城市的龙珠并在一起。这样查询所在城市就So easy了。剩下的问题就是城市的龙珠数和转移次数。龙珠数,我们可以原创 2016-03-05 23:40:20 · 486 阅读 · 0 评论 -
[HDU 4687]Boke and Tsukkomi[一般图匹配][带花树]
题目链接:[HDU 4687]Boke and Tsukkomi[一般图匹配][带花树]题意分析:某场比赛,希望有效匹配数尽量多,在此条件下,输出题目给出组合中,无效匹配的数目。解题思路:一般图的最大匹配。我们可以先求出原图所有边的匹配数cnt,然后删除这条边之后的匹配数tcnt,如果tcnt + 1 == cnt。那么说明这条边是有效的匹配,否则加入答案。个人感受:带花树原创 2016-02-29 12:02:10 · 670 阅读 · 0 评论 -
[POJ 2391]Ombrophobic Bovines[最大流][二分答案]
题目链接:[POJ 2391]Ombrophobic Bovines[最大流][二分答案]题意分析:有F个地区,每个地区有have[i]头牛,可以提供can[i]头牛的庇护,有P条连接各个地区的无向道路,问:所有牛都能得到庇护,最少需要多少时间?解题思路:源点和牛间连一条容量为have[i]的边,汇点到牛间连一条容量为can[i]的边,需要将牛拆点(否则会发生串流,2->3 and原创 2016-04-07 10:06:52 · 700 阅读 · 0 评论 -
[POJ 1691]Painting A Board[DFS][排序]
题目链接:[POJ 1691]Painting A Board[DFS][排序]题意分析:正方形中的块需要被染色,当且仅当该块上方相邻的所有块都被染色时,可以染色。色块可以连续染色,只要你拿着的是这个颜色的画笔即可,换一次画笔算一次使用,问:最少使用多少次可以使得整个方块被染完?解题思路:on[i]存储i块上方必须被染色的块,sta存储目前为止染了什么块(二进制存储)。然后将色块从原创 2016-04-07 10:15:49 · 681 阅读 · 0 评论 -
[POJ 3177]Redundant Paths[边双连通][Tarjan][缩点]
题目链接:[POJ 3177]Redundant Paths[边双连通][Tarjan][缩点]题意分析:给出一幅含有重边的无向图,问至少连多少条边,使得图中任意两个点u、v都有u->v的路径,和v->u的路径,且两者没有相同的边。解题思路:任意一个边双连通子图中两点是任意可达的,这样我们可以把这样的一个边双连通子图缩成一个点。将原图所有的双连通子图缩成一个点后,新图就是一棵树了,原创 2016-03-01 01:04:58 · 436 阅读 · 0 评论 -
[HDU 4280]Island Transport[SAP]
题目链接:[HDU 4280]Island Transport[SAP]题意分析:最西边的岛屿给最东边的岛屿运输,问最大运输能力。解题思路:最西边源点,最东边汇点,建边就行。个人感受:这题之所以写题解是因为,我竟然把边开的和点一样多= =,然后交上去不是RE而是T。。。。改了各种板子我都质疑人生了= =,结果是边开小了!!!!!教训教训!!!!具体代码如下:#inc原创 2016-03-14 23:04:04 · 572 阅读 · 0 评论 -
[HDU 4289]Control[网络流][拆点]
题目链接:[HDU 4289]Control[网络流][拆点]题意分析:恐怖分子要从S城市运输大规模杀伤性武器到T城市,而你,作为安全部门的指挥官,要把他们扣下来。埋伏某个城市的成本是cost[i],现在需要话最少的成本,把从S城市出发的恐怖分子全部扣留下来,问:最少花费是多少?解题思路:我们将城市拆成两个点,中间连一条流量为cost[i]的边,可达的城市间连一条INF的边,超级源原创 2016-03-15 00:18:25 · 558 阅读 · 0 评论 -
[POJ 1416]Shredding Company[DFS]
题目链接:[POJ 1416]Shredding Company[DFS]题意分析:给出数字a和字符串b。问:字符串b能否切割后,使得每个数字相加,和最接近a但不超过a,如果有多组解,输出"rejected",无解输出"error",输出最接近的那个数和切割方案。解题思路:字符串长度最多6。那么就枚举当前位是否切割,用vector记录切割位置,p代表当前访问的位,sum代表当前方案原创 2016-04-08 23:56:10 · 621 阅读 · 0 评论 -
[POJ 3308]Paratroopers[最大流]
题目链接:[POJ 3308]Paratroopers[最大流]题意分析:在一副n行,m列的坐标图上,有着l个敌人。现在我们有阿姆斯特朗回旋加速炮,可以一口气秒杀一行或者一列的敌人。但是我们的阿姆斯特朗回旋加速炮配置需要价格,第i行上配置要cr[i]元,第i列上配置要cc[i]元。现在要干掉所有敌人,我们最少需要多少钱?(花费钱数等于所有的炮费的乘积。product竟然是乘积,夭寿啦~~~原创 2016-04-09 00:08:10 · 616 阅读 · 0 评论 -
[HDU 2732]Leapin' Lizards[拆点][SAP]
题目链接:[HDU 2732]Leapin' Lizards[拆点][SAP]题意分析:一张图,n行,m代表每行的长度,d代表蜥蜴每次能跳跃的最大距离。给出两张图,第一张图只含有0~3,代表蜥蜴能从上面经过的次数,第二张图代表蜥蜴的位置‘L','L’只存在于第一张图>0的区域。现在问:有多少蜥蜴留在了木桩上?解题思路:将木桩拆成两个点,中间连一条边,流量为第一张图的数值,然后每个距原创 2016-03-13 00:28:38 · 452 阅读 · 0 评论 -
[POJ 2195]Going Home[费用流]
题目链接:[POJ 2195]Going Home[费用流]题意分析:m代表人,H代表房子,两者数量一致,现在问:让所有人都找到一个家待下来,最少花费多少钱?(一个点可有多个人,但一个家只能待一个人)解题思路:人与源点连一条费用为0,容量为1的边,房子与汇点连一条容量为1, 费用为0的边,人与房子连一条容量为0,费用为两者之间的距离。个人感受:蛮裸的费用流。具体代码如下原创 2016-03-22 20:52:03 · 541 阅读 · 0 评论 -
[POJ 3411]Paid Roads[BFS][状压]
题目链接:[POJ 3411]Paid Roads[BFS][状压]题意分析:求从点1到达点N的最少花费。点和边可重复经过。V1->V2的费用分为两种:1.如果通过了某点C,那么可以考虑花费P通过;2.否则只能考虑花费R通过。解题思路:考虑常规搜索,单单考虑标记节点的话,有些重复的点就不经过了。再考虑标记边,边就不能重复了,两者都不行。根本上说是缺失了可以比较的状态,导致无法肯定什原创 2016-03-31 09:28:58 · 714 阅读 · 0 评论 -
[POJ 1201]Intervals[差分约束]
题目链接:[POJ 1201]Intervals[差分约束]题意分析:区间[ai, bi]至少有ci个点在集合Z中,现在问:集合Z中,元素最少是多少个?解题思路:题目相当于是说点[ai,bi + 1)间,有>=ci的点在集合Z中,即:ai->bi+1 >= ci。把点看作图中的点,则有:dis[bi + 1] >= ci + dis[ai],翻译成转移语言:if (dis[bi +原创 2016-03-20 13:04:49 · 378 阅读 · 0 评论 -
[POJ 1724]ROADS[SPFA][DFS剪枝]
题目链接:[POJ 1724]ROADS[SPFA][DFS剪枝]题意分析:求从点1到点N费用不超过K的最短路。解题思路:用spfa根据最小花费,跑出一组距离作为起始答案,如果该答案费用大于K,那么就无解。确认有解后,我们从点1开始DFS,用花费和之前算的距离作为剪枝。个人感受:差点弃疗了。1A也是蛮爽的。具体代码如下:#include#include#原创 2016-04-01 10:03:41 · 618 阅读 · 0 评论 -
[POJ 1149]PIGS[最大流][建图]
题目链接:[POJ 1149]PIGS[最大流][建图]题意分析:有M个猪圈,每个猪圈有一定数量的猪,但是米尔科没有打开猪圈的钥匙,钥匙在顾客的手上。总共N个顾客,每个顾客拥有某些猪圈的钥匙,每次到来一个顾客,他都可以从他可以打开的猪圈选猪,需要选need只。每次选完后,米尔科可以选择把这些猪分配到任意一个打开的猪圈里面,然后关上猪圈。现在问:怎么安排可以使得猪被卖的最多,最多多少只?原创 2016-04-02 12:19:04 · 971 阅读 · 0 评论 -
[POJ 2983]Is the Information Reliable?[差分约束]
题目链接:[POJ 2983]Is the Information Reliable?[差分约束]题意分析:给出N个防御站和M个提示,提示P代表A站在B站的北方X米处,提示V代表,A站在B站北方至少1米处,现在问:给出的这M个提示是否可信?解题思路:对于P操作,我们得知dis[B] - dis[A] == x 转换为:dis[B] - dis[A] = x,再根据V,得知:dis[原创 2016-03-21 19:12:15 · 466 阅读 · 0 评论 -
[HDU 2977]Color Squares[BFS]
题目链接:[HDU 2977]Color Squares[BFS]题意分析:在一个3X3的格子中,可以染上蓝红绿黄,分别得分:B、R、G、Y(B 1.蓝色格子可以在任何位置上染色2.红色格子只能在蓝色格子旁边才能染色3.绿色格子必须周围至少有一个蓝色格子和一个红色格子才能染色4.黄色格子必须周围至少有一个蓝色格子、一个红色格子、一个绿色格子才能染色一个格子可以被重复染色原创 2016-04-04 00:38:59 · 761 阅读 · 0 评论 -
[POJ 1637]Sightseeing tour[混合图欧拉回路]
题目链接:[POJ 1637]Sightseeing tour[混合图欧拉回路]题意分析:在一个有着单向边和双向边的图中,问:是否存在欧拉回路?(题目保证图连通)解题思路:欧拉回路的特点是:图中的所有点入度等于出度。然而这题多了个无向边。我们可以考虑把无向边当成:能够随意变向的有向边。初始的时候,随意给无向边一个方向。所以我们得到了一个弱化的初始判断条件:当某个点出度-入度原创 2016-04-04 16:02:23 · 583 阅读 · 0 评论 -
[POJ 1459]Power Network[最大流]
题目链接:[POJ 1459]Power Network[最大流]题意分析:电力网中有n个节点,np个发电站,nc个消费者,m条单向边。问:整个电力网的最大供电量是多少?解题思路:源点和np建立电力容量大小的边,nc和汇点建立电力消费大小的边,然后根据m条互相相连求最大流即可。题目读入需要在scanf中的'('前添加空格,具体原因参见链接:HERE个人感受:啰嗦了一堆,原创 2016-03-22 20:41:25 · 465 阅读 · 0 评论