![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM 图论
15zhazhahe
打杂小能手/吃/喝/睡/胖/菜/
展开
-
poj1751 Highways
题目链接:http://poj.org/problem?id=1751 题意:给你一个n个点,点之间的边权为两点间距离,而且有m条边的距离为0,现在让你求这个图的最小生成树,且输出最小生成树上边权不为0的边 解析:做最小生成树的时候直接把边存起来即可,最后输出一下#include <iostream>#include <algorithm>#include <cstdio>#include原创 2017-10-04 20:58:30 · 458 阅读 · 0 评论 -
hdu6165 FFF at Valentine【强联通缩点+拓扑排序】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6165 题意:给你一个无环,无重边的有向图,问你任意两点,是否存在路径使得其中一点能到达另一点 解析:一开始想着是强联通缩点以后的图,是否成一条链,WA了以后,发现了一个样例 后面想了一下,觉得应该是,强联通后拓扑排序,因为对于每一层来说只能有一个入度为零的点,若存在两个,那么就会存在一对点不可原创 2017-08-22 21:24:17 · 885 阅读 · 0 评论 -
hdu1233 还是畅通工程【最小生成树】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233 题意:中文题 解析:最小生成树入门题#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+100;struct node{ int x,y,v; bool operator < (const n原创 2017-08-21 21:53:42 · 353 阅读 · 0 评论 -
poj1287 Networking【最小生成树】
题目链接:http://poj.org/problem?id=1287 题意:类似n个点,m条边,每条边需要花费一定的代价才能联通,问你把n个点联通的最小花费 解析:最小生成树裸题#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>using namespace std;const int原创 2017-08-21 21:49:43 · 348 阅读 · 0 评论 -
hdu3072 Intelligence System【强连通】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3072 题意:有n个人,0要把消息传给其他人,但是他们只会把消息传给认识的人,每个传递消息的人都必须花费一定的价值,但是如果若干个人相互之间都可以传递消息的话,就不用花钱,问你最少花费多少,使得0号能把消息传给所有人 解析:首先如果相互认识就不用花钱,那么先强连通缩点,构成一个无环有向图,然后维护每条原创 2017-07-26 20:59:46 · 386 阅读 · 0 评论 -
hdu3639 Hawk-and-Chicken【强连通】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3639 题意:有n个小朋友要做游戏,但是需要选一个Hawk出来,老师决定让小朋友通过投票的方式来选举这个扮演者,每个小朋友都有一个手帕,代表支持一个人(其实手帕没卵用),把他理解为支持就好了,支持具有传递性,比如A支持B,B支持C,那么C就有两个人支持了,于是在一个强连通里面,每个人都有v-1个人支持,原创 2017-07-26 20:15:39 · 324 阅读 · 0 评论 -
hdu3861 The King’s Problem【强连通+最小路径覆盖】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3861 题意:一个国王掌管着n做城市,有m条有向道路,为了方便管理,国王要把这n个城市划分成尽可能少的集合,首先强连通必须是一个集合里面,除此之外,一个集合里面的任意两点需要满足,u可以达到v,或者v可以达到u,问你最少的集合数 解析:强连通缩点以后,就相当于问你用最少的不重叠路径去覆盖这个图,那也就原创 2017-07-24 15:58:30 · 587 阅读 · 0 评论 -
poj2553 The Bottom of a Graph【强连通】
题目链接:http://poj.org/problem?id=2553 题意:现在还不是很明白,总之是要找强连通分量出度为零的点,一开始我认为如果有多个这样的分量就无解,结果WA了,看了讨论,发现只用找出度为零的就可以了,再看一遍题目还是没看懂。。。 解析:出度为零的联通分量,就直接强连通缩点,然后找出度为零的就可以了,主要还是题意。。。很难受#include <iostream>#inclu原创 2017-07-24 13:54:17 · 335 阅读 · 0 评论 -
poj2186 Popular Cows【强连通】
题目链接:https://vjudge.net/contest/56104#problem/J 题意:有n只牛,a认为b受欢迎,b认为c受欢迎,那么a也认为c受欢迎,问你有几只牛是被其他所有人认为受欢迎 解析:如果把每个牛看成一个点,谁认为谁受欢迎,看成是一条有向边,那么就相当于问,有几个节点,是这个图上其他任意节点都可达的,首先强连通缩点,对于每一个强连通分量里面的任意两点一定是可达的,缩点以原创 2017-07-23 16:17:19 · 310 阅读 · 0 评论 -
hdu3836 Equivalent Sets【强连通】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3836 题意:有n个集合,已知一些集合是一些集合的子集,你先要证明这n个集合都是相等的,集合的相等要证两遍,x是y的子集,y是x的子集,那么他们是相等的,问你在已知条件下,最少要证几次再能证得n个集合相等 解析:这题和hdu2767很像,也是相当于问你最少加几条边能使得它构成强连通#include <原创 2017-07-23 15:27:38 · 248 阅读 · 0 评论 -
hdu2767 Proving Equivalences【强连通】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2767 题意:给你n个矩阵,问你要证明多少次,才能证明这n个矩阵之间相互相等,比如要证明a,b,c,d之间相互相等,可以证明a=b,b=c,c=d,d=a,那么要证4次,现在已经告诉你了m个矩阵相等,问你你还需要证几次 解析:如果把矩阵看成点,然后把已经相等的部分,看成一条有向边,那么题目就相当于问你原创 2017-07-23 14:52:05 · 400 阅读 · 0 评论 -
hdu1827 Summer Holiday【强连通+贪心】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1827 题意:中文题 解析:首先做强连通缩点,每一个强连通分量里的每个点都是可以互相联系的,而对于每个强连通分量之间,如果一个强连通的入度为零,那么你不得不联系他,否则一定可以通过其他人联系到这一群人,所以,把每个强连通分量的入度处理出来,然后找入度为零的强连通分量,去里面的最小值,求和即是答案#in原创 2017-07-23 12:26:05 · 343 阅读 · 0 评论 -
poj2594 Treasure Exploration【最小路径覆盖】
题目链接:http://poj.org/problem?id=2594 题意:给你一个有n个点,m条边的有向图,你派若干个机器人去探路,问你最少派几个机器人能把全部路走完,每个结点可以重复走 解析:很明显的最小路径覆盖,由于可以重复走,所以要用floyd缩点处理以后,ans = n-最大匹配#include <iostream>#include <cstring>#include <algo原创 2017-07-19 13:52:54 · 305 阅读 · 0 评论 -
hdu1875 畅通工程再续【最小生成树】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1875 题意:中文题 解析:建图后直接跑kruskal最小生成树,然后判断并查集后有是否有多个集合#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+100;struct node{ int u,v;原创 2017-08-22 21:58:25 · 354 阅读 · 0 评论 -
Gym - 101490E Charles in Charge【最短路+二分答案】
题目链接:https://vjudge.net/problem/Gym-101490E 题意:给你一个图,首先让你求一个最短路s,给你一个x,让你找一条新的路径,这条路径的总长度不能超过s*(1+x%),且这条路径上的所有边权的最大值最小 解析:先跑一次最短路,这是没毛病的,那么接下来怎么求解第二个问题呢,如果告诉你这条路径的阈值,让你找一条路径,肯定是可以找的,那么就可以通过二分答案来找这条路原创 2017-09-12 22:19:21 · 676 阅读 · 0 评论 -
poj1789 Truck History
题目链接:http://poj.org/problem?id=1789 题意:简化的题意,大概就是有n个字符串,可以看成n个结点,每个结点之间的权值为两个字符串之间不同的字符个数,现在让你求这个图的最小生成树 解析:最小生成树裸题#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using原创 2017-10-04 19:27:39 · 261 阅读 · 0 评论 -
poj1251 Jungle Roads
题目链接:http://poj.org/problem?id=1251 题意:看题面的图,求最小生成树 解析:最小生成树裸题,注意一下输入就好#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;const int maxn = 1e5+100;str原创 2017-10-04 19:03:49 · 261 阅读 · 0 评论 -
poj2421 Constructing Roads
题目链接:http://poj.org/problem?id=2421 题意:给你一个邻接矩阵并且还告诉你已经有一些边相连了,让你求最小生成树 解析:已经相连的边赋值为0,然后直接做最小生成树#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cmath>using na原创 2017-10-03 11:41:18 · 329 阅读 · 0 评论 -
poj2031 Building a Space Station
题目链接:http://poj.org/problem?id=2031 题意:给你n个球,让你用最小的花费,把这n个球联通,如果两个球相交,就默认联通,否者连接这两个球的花费就是,球面之间的最短距离,输出最小花费 解析:最小生成树裸题#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#inc原创 2017-10-03 11:29:18 · 316 阅读 · 0 评论 -
poj1258 Agri-Net
题目链接:http://poj.org/problem?id=1258 题意:给你一个邻接矩阵让你求最小生成树 解析:裸题,没什么好说的,但是他这个数据范围肯定有问题,我开105的数组,给我MLE,我开1e5就A了,莫名其妙#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include原创 2017-10-03 10:41:08 · 354 阅读 · 0 评论 -
poj2349 Arctic Network
题目链接:http://poj.org/problem?id=2349 题意:有s颗星球,有p个雷达站,如果雷达站在同一个星球上,不需要距离就可以直接通信,如果不在一个星球上,他们之间的距离不能超过D,现在给你p个雷达站的坐标,如果要把这整个雷达站连通,问你最小的D是多少 解析:首先要联通全部雷达站,肯定是最小生成树,然后让你求一个D值,雷达站之间连边,相当于如果距离大于D就不能相连,那么可以先原创 2017-10-03 10:25:37 · 323 阅读 · 0 评论 -
poj1847 Tram
题目链接:http://poj.org/problem?id=1847 题意:有一个轨道网络,总共有n个结点,每个结点通向若干个其他节点,但是有些结点要通的话,必须要打下开关,现在问你 从a结点到b结点,需要打几次开关 解析:一开始就直接联通的边权设为0,不连通的边权设为1,然后直接跑a到b的最短路即可,因为结点比较少,所以用Floyd比较方便,记得有输出-1的情况#include <iost原创 2017-10-02 19:29:00 · 335 阅读 · 0 评论 -
poj3660 Cow Contest
题目链接:http://poj.org/problem?id=3660 题意:有一场牛牛竞赛,总共有n只牛,有m场比赛,每场比赛告诉你A打赢了B,现在问你m场比赛下来,有几只牛的排名是能被确定的 解析:如果一只牛能确定排名,那么他一定跟其他n-1只牛有胜负关系,那么我们就可以确定这只牛的排名了,胜负关系其实就是一条单向边,其实只要求有多少只牛的度为n-1即可,不过有一个条件是,如果A打赢B,B打原创 2017-10-02 00:11:47 · 314 阅读 · 0 评论 -
poj2240 Arbitrage
题目链接:http://poj.org/problem?id=2240 题意:有n种货币,有m种兑换方式,每种兑换方式有一定的汇率,问你有没有一种赚钱方法,能够换来换去赚钱的 解析:其实可以把所有的货币理解成一个个的结点,汇率,就是他们之间的一条单向边的权值,做边的松弛操作就相当于汇率相乘,现在题目问的就是问你经过各种松弛后是否有一个自环的汇率大于1的,只有30种货币,直接flyod就可以了#i原创 2017-10-01 22:40:35 · 273 阅读 · 0 评论 -
poj3268 Silver Cow Party【最短路】
题目链接:http://poj.org/problem?id=3268 题意:有n个农场,在x号农场有一个派对,农场之间有m条单向边连接着这些农场,每条边有一定的时间花费,每只牛都会从自己农场出发去参加这个派对,参加完以后再回到自己的农场,由于这个牛很懒,会选择总花费最少的路径来走,现在问你所有牛中,参加完派对回到农场的最多的时间花费 解析:题意总结起来就是存在一个点i->x的最短路,和x->i原创 2017-09-30 20:57:33 · 309 阅读 · 0 评论 -
poj2387 Til the Cows Come Home(dijkstra)
题目链接:http://poj.org/problem?id=2387 解析:大意就是给你一个图,找从一号结点到n号结点的最短路,这个最短路一定会存在,让你输出这个结果 解析:自己脑残写错了代码,看了讨论,发现这题确实坑。。。要注意一下重边,额。。。数据范围也有错,不过正常邻接表,最大值设大一点,不写错代码,应该就能1A的,毕竟裸题#include <iostream>#include <al原创 2017-09-20 23:14:38 · 308 阅读 · 0 评论 -
Gym - 101490J Programming Tutors
题目链接:https://vjudge.net/problem/Gym-101490J 题意:有n个学生,每个学生有一个坐标代表位置,有n个老师,每个老师有一个坐标代表位置,他们之间需要互相配对,每对之间的价值为他们之间的曼哈顿距离,现在要你找一种配对方式使得他们之间的最大价值最小,输出这个最小值 解析:由于是配对,所以应该很容易想到二分图匹配,匈牙利原理是每次都找增广路,这个也是一样的,从第一原创 2017-09-12 22:56:10 · 576 阅读 · 0 评论 -
hdu2255 奔小康赚大钱【最大权完美匹配】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 题意:中文题 解析:最大权完美匹配裸题,直接上km板子#include <bits/stdc++.h>using namespace std;const int maxn = 305;const int inf = 0x3f3f3f3f;int g[maxn][maxn];int l原创 2017-07-19 12:08:20 · 296 阅读 · 0 评论 -
hdu1269 迷宫城堡【强连通分量】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 题意:中文题 解析:判断强连通分量是否为1#include <bits/stdc++.h>using namespace std;const int maxn = 1e4+100;vector<int>G[maxn];vector<int>rG[maxn];vector<int>vs原创 2017-07-22 19:05:27 · 355 阅读 · 0 评论 -
poj2446 Chessboard【最大匹配】
题目链接:http://poj.org/problem?id=2446 题意:有一个n*m的棋盘,上面有k个洞,问你能不能用1*2,如果能就输出YES,否则输出NO 解析:如果把一个1*2的砖块能铺上去,看成一个格子和他相邻格子是有条边的,那么就可以把这个棋盘构成一个二分图,那么你只需要判断最大匹配是否等于空格数就可以了,注意:题目是先输入y再输入x#include <iostream>#in原创 2017-07-19 10:11:50 · 326 阅读 · 0 评论 -
hdu2768 Cat vs. Dog【最大独立集】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2768 题意:有c只猫,d只狗,有n条意见,每条意见表面保留哪只宠物,丢到哪只宠物,问你最多满足几个人的意见 解析:可以把保留猫的看成一群人,保留狗的看成一群人,这样就构成了一个二分图,然后保留猫和保留狗的人出现分歧就连一条边,问你最多满足几个意见,也就相当于求这个二分图的最大独立集,最大独立集+最小原创 2017-07-16 15:29:18 · 430 阅读 · 0 评论 -
hdu3729 I'm Telling the Truth【二分图匹配】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3729 题意:有n个学生,他们没有告诉老师自己的分数,只是说了自己的排位区间,即从xi到yi,但是有些学生说了谎,现在问你那些学生说了实话,由于有多种可能,让你输出字典序最大的 解析:也就是求二分图匹配,从顶点编号最大的开始找增广路,这样能保证字典序最大#include <bits/stdc++.h>原创 2017-07-15 22:30:33 · 293 阅读 · 0 评论 -
hdu2063 过山车【二分图匹配】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 题意:中文题 解析:二分图匹配裸题#include <bits/stdc++.h>using namespace std;const int maxn = 5000;struct node{ int to,next;}edge[maxn];int head[maxn],cn原创 2017-07-15 14:24:52 · 230 阅读 · 0 评论 -
poj1469 COURSES【二分图匹配】
题目链接:http://poj.org/problem?id=1469 题意:有p门课,有n个学生,每门课有count个学生参加,现在每门课都要选一个代表出来,一个代表只能代表一门课,现在问你是否能对于每门课都选出一个代表出来 解析:其实就是问你这个二分图是否有完美匹配,即求最大匹配是否等于p#include <iostream>#include <algorithm>#include <s原创 2017-07-15 14:03:43 · 241 阅读 · 0 评论 -
poj1325 Machine Schedule【最小顶点覆盖】
题目链接:http://poj.org/problem?id=1325 题意:有k个工作,有两种机器A,B,A机器有n种工作模式,B有m种工作模式,A,B的工作模式初始都为0,对于工作i,只能工作在A的x模式或B的y模式,而每次为机器更换工作模式需要重启机器,问你完成所有工作的情况下,最少的重启机器次数 解析:这是一道最小顶点覆盖的题目,由题意可得,这是二分图,故最小顶点覆盖等于最大匹配数,对于原创 2017-07-15 13:20:28 · 274 阅读 · 0 评论 -
poj1274 The Perfect Stall【二分图匹配】
题目链接:http://poj.org/problem?id=1274 题意:一个农场主,建了m个高科技产奶器,他由n头奶牛,每头奶牛值喜欢其中的几个产奶器,只有去自己喜欢的产奶器那里才能产奶,现问你最多几头牛能产奶 解析:二分图匹配的经典问题,直接上匈牙利#include <iostream>#include <algorithm>#include <string>#include <c原创 2017-07-14 15:51:23 · 282 阅读 · 0 评论 -
hdu3572 Task Schedule【最大流】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3572 题意:有m台机器,有n个任务,每个任务需要花费pi实现才能做完,而且第i个任务只能在规定的si到ei这个时间段才能在机器上运行,一台机器只能跑一个任务,但是你可以把一个任务跑到一半去跑另一个,问你能否每个任务的规定时间里面,把所有任务做完。 解析:这个可以理解为多源点多汇点的最大流,对于每一个原创 2017-07-13 09:27:44 · 273 阅读 · 0 评论 -
hdu3549 Flow Problem【最大流】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 题意:求1到n的最大流 解析:最大流裸题#include <bits/stdc++.h>using namespace std;const int maxn = 1205;const int inf = 0x7fffffff;struct node{ int to,rev,c原创 2017-07-12 17:22:20 · 278 阅读 · 0 评论 -
poj2513 Colored Sticks【欧拉图】
题目链接:http://poj.org/problem?id=2513 题意:由若干根木棍,每根木棍的两头都有不同的颜色,只有颜色相同,两根木棍才能连在一起,问你能否把所有木棍都连在一起 解析:其实就是判断无向图中是否有欧拉道路,由于木棍可能有3e5那么大,所以用map来转换是会超时的,更好的办法是采用字典树,本题还有一个坑点就是有可能一根木棍都没有#include <iostream>#in原创 2017-07-10 18:01:12 · 264 阅读 · 0 评论 -
poj2337 Catenyms【欧拉图】
题目链接:http://poj.org/problem?id=2337 题意:问你所有的字符串能否首尾相连在一起,如果能,输出字典序最小的那一串东西,否则输出* 解析:对于输入所有字符串先排个序,然后逆序建图,这样就搜的时候就是优先选择字典序小的字符串,然后就是判是否符合题意,搜的时候记录一下结果#include <iostream>#include <algorithm>#include原创 2017-07-10 15:02:07 · 274 阅读 · 0 评论