图论
文章平均质量分 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 · 311 阅读 · 0 评论 -
hdu1281(二分图)
题目大意:给定一个n*m的棋盘,其中k个格子可以放车(车可以横着走和竖着走即攻击,不限步数),要求同一行或者同一列不能放多余一辆车。如果去掉一个位置的车,所能放的最多车的数目减少,就称为重要点,求重要点的个数。题目分析:典型的行列匹配题,由于某行或某列最多放一个车,当某点放车时,该点的行和列之间就连一条边,边数就是能放的最多的车数。 暴力解法:每次去掉原创 2017-01-12 00:16:49 · 233 阅读 · 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 · 391 阅读 · 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 · 847 阅读 · 0 评论 -
hdu1269有向图强连通分量(tanjar模板)
题目链接迷宫城堡题意:一个有向图,看任意两点是否liantongtanjar算法: 做一遍dfs,用dfn[i]表示编号为i的结点在DFS过程中的访问序号(也可以叫做开始时间)用Low[i]表示i节点dfs过程中i的下方结点所能到达的开始时间最早节点的时间。初始时dfn[i]=low[i] 在dfs过程中会形成一搜索树,在搜索树上越先遍历到的节点,显然dfn的值就越小原创 2016-11-26 09:22:32 · 693 阅读 · 0 评论 -
hdu1150 最小点覆盖
题目链接Machine Schedule有A和B两个机器,每个机器有不同工作模式,有很多任务,每个任务可以自在A上以mode_i运行或者是在B上以mode_j运行,每次换mode都要重启机器给出k个任务,要求怎么安排才能让重启次数最少最小点覆盖:最小覆盖要求用最少的点(X集合或Y集合的都行)让每条边都至少和其中一个点关联。可以证明:最少的点(即覆盖数)=原创 2016-12-05 20:15:17 · 324 阅读 · 0 评论 -
hdu1116欧拉道路
题目链接Play on Words将给出的所有单词首尾相连,前一个单词的尾部必须和下一个单词字首相同acm->motorola....欧拉通路:图中存在一条通过各边一次且仅一次的通路欧拉回路:图中存在一条通过各边一次且仅一次的回路如果一个无向图是连通的,且最多只有两个奇点(度数为奇数),则一定存在欧拉道路。如果有两个奇点,则必须从一个奇点出发,另一个奇点终止原创 2016-11-26 15:28:14 · 334 阅读 · 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 · 333 阅读 · 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 · 562 阅读 · 0 评论