图论500题
_NMfloat_
但日有寸进,此心甚喜。
展开
-
HDU 1045 Fire Net 二分图
题意:在给出的图中‘.’放置点。(同一行或者同一列的联通块中不能放置两个或以上黑点)思路:二分图,同一行的联通块缩成一个点,因为是等价的,称为二分图的X部,同理,同一列的联通块缩成一个点,称为二分图的Y部,‘.’处X部和Y部连一条线。找最大匹配即可。 http://acm.hdu.edu.cn/showproblem.php?pid=1045/*************************原创 2015-12-09 00:13:47 · 459 阅读 · 0 评论 -
HDU 1522 Marriage is Stable 稳定婚姻问题 (再水一发)
http://acm.hdu.edu.cn/showproblem.php?pid=1522\/********************************************* Problem : HDU 1522 Author : NMfloat InkTime (c) NM . All Rights Reserved .******************原创 2016-02-20 14:43:56 · 442 阅读 · 0 评论 -
HDU 1914 The Stable Marriage Problem 稳定婚姻问题 (接着水)
恩,也是水题。我还是改的上一题代码。QwQ。注意:每个人喜爱的人不一定是n。所以不能直接按n算。 http://acm.hdu.edu.cn/showproblem.php?pid=1914/********************************************* Problem : HDU 1914 Author : NMfloat InkTime原创 2016-02-20 15:05:17 · 471 阅读 · 0 评论 -
HDU 1530 Maximum Clique 最大团
题意:给一个图,找图中的最大团,并输出最大团的顶点数。思路:暴搜。dfs判断每个点在或者不在。加一个剪枝。就是如果剩下的节点+当前已经搜到的最大团的节点<=已经找到的最好结果,就停止搜索。这个剪枝效率蛮低的。 3510ms过的。 http://acm.hdu.edu.cn/showproblem.php?pid=1530/************************************原创 2016-02-20 12:22:13 · 483 阅读 · 0 评论 -
HDU 3585 maximum shortest distance 二分+最大团
题意:n个点中找k个点使得它们最短距离最长。思路:二分,二分这个距离。(如果一条边的长度>=这个距离,就可以连边。)然后看看最大团的大小,比k大还是比k小。 http://acm.hdu.edu.cn/showproblem.php?pid=3585/********************************************* Problem : HDU 3585原创 2016-02-20 20:55:42 · 677 阅读 · 0 评论 -
HDU 1213 How Many Tables 并查集
题意n个点,m条边,无向图,求最后形成的集合有多少个。解法基础的并查集传送门 http://acm.hdu.edu.cn/showproblem.php?pid=1213Code#include <cstdio>#include <iostream>using namespace std;class UnionFind {private: int * fa; int siz原创 2017-03-31 11:44:49 · 308 阅读 · 0 评论 -
HDU 1272 小希的迷宫 并查集
题意给出一个图,问这个图是否是一棵树思路首先判断这个图有没有环,这个直接用并查集就可以判断,为此我改进了并查集的模板,然后就是判断这个图是不是一片森林,这个需要记录下有多少个点,如果有n个点,有n-1条边就是一棵树Code#include <cstdio>#include <cstring>#include <iostream>using namespace std;class UnionFin原创 2017-03-31 23:56:56 · 336 阅读 · 0 评论 -
HDU 1325 Is It A Tree?
题意判断一系列的输入是否是一棵树思路比HDU 1272多判断一个入度,如果入度为0的点不止一个,就肯定不是一颗树传送门 http://acm.hdu.edu.cn/showproblem.php?pid=1325Code#include <cstdio>#include <cstring>#include <iostream>using namespace std;class UnionF原创 2017-07-15 11:56:30 · 452 阅读 · 0 评论 -
HDU 1856 More is better
题意求并查集中最大的一个集合的大小思路Union过后,使用Find找到每个节点的祖先统计即可。传送门 http://acm.hdu.edu.cn/showproblem.php?pid=1856#include <cstdio>#include <cstring>#include <iostream>using namespace std;class UnionFind {private原创 2017-07-15 12:19:26 · 309 阅读 · 0 评论 -
HDU 1102 Constructing Roads 最小生成树
题意最小生成树模板题思路我把sort的cmp函数 e1.dis < e2.dis 写成 e1.dis - e2.dis RE了一下午,SAD传送门 http://acm.hdu.edu.cn/showproblem.php?pid=1102#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#i原创 2017-07-15 21:57:46 · 366 阅读 · 0 评论 -
HDU 1232 畅通工程 并查集水题
题意并查集算法最后得到的集合的个数减一就是结果传送门 http://acm.hdu.edu.cn/showproblem.php?pid=1232#include <cstdio>#include <cstring>#include <iostream>using namespace std;class UnionFind {private: int * fa; int原创 2017-07-15 22:07:28 · 422 阅读 · 0 评论 -
HDU 1435 Stable Match 稳定婚姻
思路:就是一个简单的稳定婚姻问题的模型,把距离近的,容量大的排在见面。然后就是发射方一次次就追求,接收方选择接受还是不接受。 http://acm.hdu.edu.cn/showproblem.php?pid=1435/********************************************* Problem : HDU 1435 Author : NMflo原创 2016-02-20 14:07:18 · 487 阅读 · 0 评论 -
HDU 1507 Uncle Tom's Inherited Land* 二分图最大匹配
题意:有N*N的地,其中有些是水池,如果空地形成1*2的大小就可以卖掉。问:最多可以卖掉多少块空地?输出每块空地在N*N矩阵中的位置。思路:(i+j)是奇数的作为X部,(i+j)是偶数的作为Y部,空格相邻就连一条线,找最大匹配即可。 http://acm.hdu.edu.cn/showproblem.php?pid=1507/**********************************原创 2016-02-19 22:03:35 · 518 阅读 · 0 评论 -
HDU Courses 二分图最大匹配
题意:P门课程,N个学生。要求,每门课程都要有一个学生代表,而且一个学生不能做两节课的代表。思路:课程为二分图X部,学生为二分图Y部,如果最大匹配=P,输出YES,否则,输出NO。读错了题目,WA了N次。 http://acm.hdu.edu.cn/showproblem.php?pid=1083/*********************************************原创 2015-12-09 18:05:05 · 387 阅读 · 0 评论 -
HDU 2119 Matrix 二分图最小点覆盖
题意:给一个矩阵,(矩阵的值只有0和1)你可以划掉一行所有的1,问最少划多少次?思路:二分图最小点覆盖的概念:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖所有的边。行为X部,列为Y部,如果aija_{ij}为11,就ii,jj连一条边。二分图最小点覆盖 ==== 二分图最大匹配。 http://acm.hdu.edu.cn/showproblem.php?pid=2原创 2015-12-10 22:33:59 · 402 阅读 · 0 评论 -
HDU 1054 Strategic Game 二分图最小点覆盖
题意:给你一颗树,一个点可以占领跟它连的所有的边。问最少需要多少个这样的点?思路:一眼就是染色之后二分图最小点覆盖。坑点:T得我不能自理,发现是边数组开小了,我加的双向边,也是爽。 http://acm.hdu.edu.cn/showproblem.php?pid=1054/********************************************* Problem :原创 2015-12-14 19:02:51 · 432 阅读 · 0 评论 -
HDU 1068 Girls and Boys 二分图
题意:找出这个班最大的没有男女关系的集合。思路:结果就是n−n-二分图的最大匹配。然而因为我作死,想把这个二分图染色,然后再匹配,然后就跪了。我认为我是对的呀(QAQ)。然而还是学网上的做法,拆点,把一点拆成两个点,然而把最大匹配除以2就是原来的匹配数,这样真的好方便呀。不用染色和重新建边了。我自己的建边有问题,我的建边是针对一棵树的,对于成环图就成了问题。然后我就脑补了一种方法,来解决成环图的问题原创 2015-12-16 16:23:52 · 407 阅读 · 0 评论 -
hdu 1269 迷宫城堡 强连通分量
模板题。 http://acm.hdu.edu.cn/showproblem.php?pid=1269#include <map>#include <set>#include <queue>#include <cmath>#include <ctime>#include <cstdio>#include <cstring>#include <cstdlib>#include <原创 2015-12-02 16:36:56 · 316 阅读 · 0 评论 -
HDU 3836 Equivalent Sets 强连通分量
题意:让所有点强连通需要最少连多少条边?思路:缩点,求出每个强连通分量的入度和出度,如果强连通分量的入度为0,则incnt++,如果强连通分量的出度为0,则outcnt++,取max(incnt,outcnt)就是答案。因为一个强连通的图中,每个点的入度和出度都是≥\ge1的。所有最多只要连max(incnt,outcnt)条线,因为可以将出度为0的点连上入度为0的点。 http://acm.h原创 2015-12-05 17:21:00 · 351 阅读 · 0 评论 -
HDU 1150 二分图最小点集覆盖
题意:有两台机器,第一台机器有n个模式,第二台机器有m个模式,有k个任务,一个任务可以在第一台机器下用u模式解决,也可以在第二台机器下用v模式解决。每转换一次模式,就要花费1,问最少花费。思路:就是用最少的模式来覆盖所有的任务。就是红果果的最小点集覆盖呀。坑点:遇到0点要直接绕过去,不用建边。竟然被这个坑了一发。 acm.hdu.edu.cn/showproblem.php?pid=1150/原创 2016-02-19 16:27:33 · 449 阅读 · 0 评论 -
HDU 1151 Air Raid 二分图最小边覆盖
题意:在一个城镇,有m个路口,和n条路,这些路都是单向的,而且路不会形成环,现在要弄一些伞兵去巡查这个城镇,伞兵只能沿着路的方向走,问最少需要多少伞兵才能把所有的路口搜一遍。(这个题意摘自题目的Discuss里,@ KaneTiberium)思路:注意的一点就是如果1->2,1->3,只能走其中一条路,不可以返回再来走,因为要沿着路的方向。题目就是用最少的边去覆盖图的点了。定理:二分图最小边覆盖=图原创 2016-02-19 17:33:59 · 517 阅读 · 0 评论 -
HDU 1498 50 years, 50 colors 二分图最小点覆盖
题意:给一个n*n的矩阵,每个矩阵的格子里数字,代表格子里气球的颜色。每次可以消除同一行或者同一列里相同颜色的气球。问:哪种颜色的气球在m次之内不能被消除的?思路:消除每种颜色的时候,行是X部,列是Y部,AijA_{ij}是连通i行和j列的边。很明显是用点来覆盖边。就是求最小点覆盖。对于每种颜色都求一遍最小点覆盖就行了。 http://acm.hdu.edu.cn/showproblem.php原创 2016-02-19 19:49:18 · 414 阅读 · 0 评论 -
HDU 1528 Card Game Cheater 二分图最大匹配
题意:Adam和Eve玩扑克,比大小,“23456789TJQKA”从前到后依次增大,“CDSH”四种花色依次增大,谁的牌大,谁就得一分。Eve开始就知道Adam的所有牌,Eve可以选择拿什么牌对Adam的什么牌。问:Eve最多能得几分?思路:建图,对Eve的第i张牌,枚举Adam的牌,如果Adam的牌比Eve的牌小的话,就连一条边。求最大匹配即可。(这不就是田忌赛马吗?也就是可以贪了。) ht原创 2016-02-19 20:20:41 · 424 阅读 · 0 评论 -
HDU 1233 还是畅通工程 基础最小生成树
传送门 http://acm.hdu.edu.cn/showproblem.php?pid=1233#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;struct Edge {public: int u;原创 2017-07-15 22:34:17 · 412 阅读 · 0 评论