![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 77
pmt123456
这个作者很懒,什么都没留下…
展开
-
hdu1285(拓扑排序)
题目链接:确定比赛名次 题目分析:若P1赢了P2,则在连一条边P1-->p2,对所有结点排序,求得一个序列,使得每一条有向边(u, v)对应的u都排在v的前面 方法一: dfs,白书上讲的方法,但该方法不能保证输入的顺序 vis[u]=0表示从来没有访问过(从来没有调用过dfs(u)); vis[u]=1表示已经访问过,并且还递归访问过它的所有子孙(即dfs(u)曾被调用过,并已返回);原创 2017-01-13 09:37:11 · 301 阅读 · 0 评论 -
hdu1281(二分图)
题目大意:给定一个n*m的棋盘,其中k个格子可以放车(车可以横着走和竖着走即攻击,不限步数),要求同一行或者同一列不能放多余一辆车。如果去掉一个位置的车,所能放的最多车的数目减少,就称为重要点,求重要点的个数。 题目分析:典型的行列匹配题,由于某行或某列最多放一个车,当某点放车时,该点的行和列之间就连一条边,边数就是能放的最多的车数。 暴力解法:每次去掉原创 2017-01-12 00:16:49 · 227 阅读 · 0 评论 -
hdu 1045(dfs暴搜/缩点+二分图最大匹配(典型行列匹配题))
一、dfs暴搜 参见八皇后问题,(搜索其四个方向)判断每一个格子能不能放,能放,就标记为'@' 因为棋盘大小最多为4,所以不会TLE #include #include using namespace std; char g[5][5]; int tot, sz, ans; int dx[] = { -1, 1, 0, 0 }; int dy[] = { 0, 0, -1, 1 };原创 2016-11-03 23:34:07 · 384 阅读 · 0 评论 -
hdu1083(二分图匹配)
N个学生,P门课程,求能不能满足下列条件 1、每个学生只能一门课程的代表 2、每门课程必须要有有一个代表 典型的二分匹配 #include #include #include #include using namespace std; const int maxp=105; const int maxn=305; int P,N; int link[maxn]; int原创 2016-11-26 14:50:50 · 836 阅读 · 0 评论 -
hdu1269有向图强连通分量(tanjar模板)
题目链接迷宫城堡 题意:一个有向图,看任意两点是否liantong tanjar算法: 做一遍dfs,用dfn[i]表示编号为i的结点在DFS过程中的访问序号(也可以叫做开始时间)用Low[i]表示i节点dfs过程中i的下方结点所能到达的开始时间最早节点的时间。初始时dfn[i]=low[i] 在dfs过程中会形成一搜索树,在搜索树上越先遍历到的节点,显然dfn的值就越小原创 2016-11-26 09:22:32 · 681 阅读 · 0 评论 -
hdu1150 最小点覆盖
题目链接Machine Schedule 有A和B两个机器,每个机器有不同工作模式,有很多任务,每个任务可以自在A上以mode_i运行或者是在B上以mode_j运行,每次换mode都要重启机器 给出k个任务,要求怎么安排才能让重启次数最少 最小点覆盖: 最小覆盖要求用最少的点(X集合或Y集合的都行)让每条边都至少和其中一个点关联。可以证明:最少的点(即覆盖数)=原创 2016-12-05 20:15:17 · 313 阅读 · 0 评论 -
hdu1116欧拉道路
题目链接Play on Words 将给出的所有单词首尾相连,前一个单词的尾部必须和下一个单词字首相同 acm->motorola.... 欧拉通路:图中存在一条通过各边一次且仅一次的通路 欧拉回路:图中存在一条通过各边一次且仅一次的回路 如果一个无向图是连通的,且最多只有两个奇点(度数为奇数),则一定存在欧拉道路。 如果有两个奇点,则必须从一个奇点出发,另一个奇点终止原创 2016-11-26 15:28:14 · 327 阅读 · 0 评论 -
hdu1068 最大独立集
找出一个最大的集合使得该集合的任意两个人之间没有边相连 最大独立集数=点数-最大二分匹配 若(a,b)有关,则(b,a)有关,每一个关系算了两次,相当于二分图的两边集合没有分男女,两边都是总人数,所以最大匹配数要除以2 #include #include #include #include using namespace std; const int maxn=1005; vec原创 2016-11-17 10:06:56 · 321 阅读 · 0 评论 -
hdu1054 最小点覆盖/树形DP
题目链接:Strategic Game 两种做法 (1)最小点覆盖=最大匹配(匈牙利) #include #include #include using namespace std; const int maxn = 1505; bool vis[maxn]; int link[maxn]; vectorg[maxn]; int n; int dfs(int u){原创 2016-11-15 10:34:21 · 554 阅读 · 0 评论