===== 图论 =====
柠檬不酸只是萌
遇 见 最 美 的 自 己 。
展开
-
CSU 1531 — Jewelry Exhibition
原题:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1531题意:给定一个n*m的矩阵;矩阵里面有k个点,下面k行给出坐标;有一把刷子,每次可以刷单位长度的一行或者一列;问至少刷几次可以刷完所有的点;思路:将所有的点映射到格子的左下角,即只取坐标的整数部分;再用最大匹配做;#include#i原创 2015-07-24 14:37:48 · 532 阅读 · 0 评论 -
HDU 1281 — 棋盘游戏 最大匹配
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1281题意:求的三个数 — — 1、cas数;2、特殊边的数量(所谓特殊边即不连该条边会使得最大匹配数减少);3、最大匹配数;#include#includeconst int maxn = 110;int n, m, k;int cas = 0;bool link[m原创 2015-07-26 19:32:51 · 348 阅读 · 0 评论 -
HDU 4738 — Caocao's Bridges 判桥
原题:http://acm.hdu.edu.cn/showproblem.php?pid=4738题意:有n个点,m条无向边;下面给出m条边的权值;求所有桥中最小的权值;注意:1、图可能不连通,那么就输出0;2、最小的权值可能为0,这时候输出的是1而不是0;3、可能存在重边;#include#include #include#i原创 2015-06-06 16:19:54 · 555 阅读 · 0 评论 -
HDU 3667 — Transportation 费用流
原题:http://acm.hdu.edu.cn/showproblem.php?pid=3667题意:有n个点,m条有向边,需要运送k个物品;下面m行,u v a c,表示从 u 到 v 的路最大容量为c,危险系数为a;当你在危险系数为a的路上运送x个物品时,费用为a*x*x;问最小费用,若不能运输k个物品,则输出-1;思路:费用流的模板中流量和费用呈线性关系原创 2015-06-04 21:11:08 · 468 阅读 · 0 评论 -
POJ 2516 — Minimum Cost 费用流
原题:http://poj.org/problem?id=2516题意:有n家商店,m个供应商,k个商品;n*k的矩阵,第i行表示第i家商店对这k个商品的需求量;m*k的矩阵,第i行表示第i家供应商的存货;接下来有k个n*m的矩阵,第i个矩阵表示第i个商品在运输过程中的花费;问最小花费,若不能满足各商店的需求则输出-1;思路:计算k个费用流,累加;原创 2015-05-26 23:52:21 · 400 阅读 · 0 评论 -
HDU 3488 — Tour 费用流/KM算法
原题:http://acm.hdu.edu.cn/showproblem.php?pid=3488题意:有n个点,m条有向带权边;求一些环,使得每个点属于且仅属于一个环;问环边的权值和的最小值;思路:拆点,建图,跑一个费用流;源点到节点,流量为1,花费为0(s, i, 0, 1);节点到节点,流量为1, 花费为边权值(u, v+n, cos, 1);节点原创 2015-05-29 22:32:43 · 552 阅读 · 0 评论 -
UVA 10806 — Dijkstra, Dijkstra. 费用流
原题:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1747题意:有n个点,1到n;给出m条无向边的花费;问从1 走到 n,再从n 走到 1(不走重复的路)的最小花费;思路:不走重复的路,即流量为1,;设1为源点,n+1原创 2015-05-26 23:30:57 · 693 阅读 · 0 评论 -
HDU 1083 — Courses
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1083题意:有p个课程n个学生;学生可以自由选择课程,但一个学生只能代表一个课程;接下来p行,第i行表示第i门课,第一个数m为选该门课的人数,然后列出这m个人;问是否每门课都有学生代表;思路:就是求最大匹配,若匹配数为p,则YES,否则NO;#incl原创 2015-05-17 10:31:22 · 510 阅读 · 0 评论 -
POJ 3281 — Dining
原题:http://poj.org/problem?id=3281题意:有N头牛,F种食物,D种饮料;每种食物或者饮料只能供一头牛享用,且每头牛只享受一种食物和一种饮料; 接下来有N行,前面两个数f, d分别表示第i头牛喜欢的食物有f种,饮料有d种,接下来f个数和d个数为具体喜欢种类; 问最多能满足几头牛的需求;思路:将N头牛拆点为N1和N2,先让源点和原创 2015-05-07 23:01:56 · 460 阅读 · 0 评论 -
HDU 4292 — Food
原题:http://acm.hdu.edu.cn/showproblem.php?pid=4292题意:有N个人,F种食物,D种饮料; 接下来两行分别给出每种食物以及每种饮料的数量; 下面两个N行 —— 第一个N行表示N个人对这F种食物的喜好,Y表接受,N表拒绝; 第二个N行表示N个人对这D种饮料的喜好,Y表接受,N表拒绝; 问最多可以满足几个人原创 2015-05-07 22:21:36 · 463 阅读 · 0 评论 -
HDU 3572 — Task Schedule
原题:http://acm.hdu.edu.cn/showproblem.php?pid=3572题意:有n个任务,m个机器; 每个任务有需要的天数(P),开始时间(S),截止时间(E); 每个任务都可以分段进行,但同一时刻同一台机器只能做一个任务; 问能否完成所有任务;思路:我们可以把每个任务以及每一天作为节点; 建图 — — 源点s(编号原创 2015-05-07 20:29:52 · 461 阅读 · 0 评论 -
HDU 2819 — Swap 二分匹配
原题:http://acm.hdu.edu.cn/showproblem.php?pid=2819题意:给定一个n*n的01矩阵;通过行或列的变换使得主对角线上都为1;问变换次数,以及具体的变换操作;#include#include#include#includeusing namespace std;const int maxn = 110;in原创 2015-07-27 17:08:54 · 393 阅读 · 0 评论 -
POJ 2594 — Treasure Exploration 最小路径覆盖
原题:http://poj.org/problem?id=2594题意:有n个点,m条有向边;问最少用多少条路径可以覆盖所有的点;路径可以合并,即如果有很多的点在一条单向的路径上,那么就可以用这一条路径覆盖这些点;另外,一个单独的点也算作一条路径;思路:用floyd合并路径;再求最大匹配数;最小路径覆盖 = 顶点数-最大匹配数;#incl原创 2015-07-27 22:50:54 · 480 阅读 · 0 评论 -
HDU 2255 — 奔小康赚大钱 KM入门题
原题:http://acm.hdu.edu.cn/showproblem.php?pid=2255#include#include#include#define inf 1e9using namespace std;const int maxn = 310;int nx, ny; //nx、ny分别表示X集和Y集的顶点数; int match[maxn];int l原创 2015-08-02 16:38:26 · 509 阅读 · 0 评论 -
KM算法
一般对KM算法的描述,基本上可以概括成以下几个步骤: (1) 初始化可行标杆 (2) 用匈牙利算法寻找完备匹配 (3) 若未找到完备匹配则修改可行标杆 (4) 重复(2)(3)直到找到相等子图的完备匹配 关于该算法的流程及实施,网上有很多介绍,基本上都是围绕可行标杆如何修改而进行的讨论,至于原理并没有给出深入的探讨。 KM算法是用于寻找带权二分图最佳匹配的算法。转载 2015-08-12 21:43:13 · 1130 阅读 · 0 评论 -
HDU 2448 — Mining Station on the Sea 最优匹配+Floyd
原题:http://acm.hdu.edu.cn/showproblem.php?pid=2448题意:第一行给出n、m、k、p;n表示有n个港口和n艘船;m表示有m个油田;k表示油田之间的k条无向边;p表示港口到油田的p条有向边;第二行给出n艘船所在油田的位置;下面k行给出k条边的信息;接下去p行给出p条边的信息;问将这n艘船开回港口(一个港口最多容纳一艘船)的最短路程;原创 2015-08-13 12:10:52 · 478 阅读 · 0 评论 -
HDU 4751 — Divide Groups 交叉染色判二分图
原题:http://acm.hdu.edu.cn/showproblem.php?pid=4751题意:有n个人;下面n行,表示第i个人所认识的人,以0结束;问能否分成两个集合,使得每个集合均为完全图;思路:也就是说不认识的人一定不在一个集合里;用交叉染色法来判断即可;#include#include#include#includeusin原创 2015-07-31 16:35:01 · 462 阅读 · 0 评论 -
HDU 4185 — Oil Skimming 二分匹配
原题:http://acm.hdu.edu.cn/showproblem.php?pid=4185题意:问“##”相邻的两个#,最多有几对;思路:把每个#按顺序标号,二分图的X、Y集就是#的标号数;如果有相邻的#,就将其相连;最后求最大匹配数,因为相邻的#有重复,所以最后的答案是sum/2;#include#include#include#原创 2015-07-31 17:01:31 · 420 阅读 · 0 评论 -
HDU 3829 — Cat VS Dog 最大独立集
原题:http://acm.hdu.edu.cn/showproblem.php?pid=3829题意:每个小盆友都有自己喜欢的动物和不喜欢的动物,对于每一个小盆友来说,如果动物园里有自己喜欢的动物且没有不喜欢的动物,那他就是幸福的;现在要在动物园里去掉一些动物,问最多可以让几个小盆友幸福;第一行给出n、m、p,分别表示猫的数量,狗的数量,小盆友的人数;下面p行,给出每个人喜欢原创 2015-07-31 21:21:20 · 718 阅读 · 0 评论 -
HDU 2458 — Kindergarten 最大团
原题:http://acm.hdu.edu.cn/showproblem.php?pid=2458题意:给出女孩人数、男孩人数,以及m条关系;下面m行,u — v,表示女孩u和男孩v相互认识;并且,男孩们之间相互认识,女孩们之间也相互认识;问最多有多少个人,他们相互之间都认识;思路:显然是求最大团;最大团 = 补图的最大独立集;最大独立集 = 顶点数 -原创 2015-07-29 21:06:02 · 489 阅读 · 0 评论 -
HDU 4160 — Dolls 最小路径覆盖
原题:http://acm.hdu.edu.cn/showproblem.php?pid=4160题意:有n个箱子,下面n行给出每个箱子的长、宽、高;大箱子可以嵌套小箱子(要求长宽高均小于外面的箱子,且长宽高一一对应,即长对应长);问露在外面箱子有几个;思路:1的体积小于2,2的体积小于3,那么3套2、2套1,就只有一个箱子3露在外面,可以想到是最小路径覆盖;最原创 2015-07-29 20:50:38 · 470 阅读 · 0 评论 -
POJ 3020 — Antenna Placement 最小边覆盖
原题:http://poj.org/problem?id=3020题意:给出一个n*m的矩阵, ‘ o ’ 表示空地,' * ' 表示城市;现要这些城市都覆盖无线网,在一些城市建基站,一个基站可以至多覆盖相邻的两个城市(这里的两个城市指建了基站的城市和相邻的一个城市);问最少需要建立几个基站;思路:可以想到是最小路径覆盖;此处构建二分图并不是简单的把坐标分为X集原创 2015-07-27 21:34:25 · 510 阅读 · 0 评论 -
HDU 1507 — Uncle Tom's Inherited Land*
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1507题意:给定一个n*m的矩阵,以及k个点(表示坏点,无法铺设);接下来K行给出这些点的坐标;问最多可以铺设几个1*2的格子,并输出匹配方式;思路:将能组成1*2方格的两个坐标相连,然后求最大匹配;二维坐标均用一维表示;#include#inclu原创 2015-05-14 21:58:06 · 449 阅读 · 0 评论 -
HDU 1533 — Going Home 最小费用最大流
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1533题意:给定一个n*m的矩阵,有x个人要到x个房子里,每个房子一人;m表示人,H表示房子;人每走一步花费1美元;问所有人移动到房子里的最小花费;思路:源点s(编号0)— 人(cap 1,cost 0);人 — 房子 (cap 1,cost为最短路径花费,即坐标差)原创 2015-05-14 18:36:56 · 574 阅读 · 0 评论 -
ZOJ 3795 — Grouping 缩点+拓扑
原题:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3795题意:给定n个点,m条有向边; 问至少把点分成几个集合,使得集合中任意两点均不可到达(一个集合存放一个点也可以);思路:首先把环缩点,新得到的点权值为环中点数和,然后拓扑求最长链;#include#i原创 2015-05-03 21:19:36 · 519 阅读 · 0 评论 -
HDU 4751 — Divide Groups
原题:http://acm.hdu.edu.cn/showproblem.php?pid=4751题意: 有n个人,下面n行; 表示第i个人认识的人,以0结束; 问能不能分成两个组,使得组内任意两个人相互认识;思路: 用0和1表示两个组; b[i]表示第i个人所属的组别; 如果两个人不认识,就是在不同的组;#includ原创 2015-05-10 21:21:54 · 447 阅读 · 0 评论 -
POJ 3160 — Father Christmas flymouse 强连通+spfa
原题:http://poj.org/problem?id=3160题意:给你一个有n个点,m条有向边的图,以及每个点的权值; 问遍历一遍图能得到的最大权值; 每次经过一个点时,可以选择是否获取该点的权值,但只能获取一次; 起点任意;思路:将环缩点,每个强连通分量的权值为该连通块中所有正点权值和; 得到一个有向无环图,然后建立一个虚根,将所有入原创 2015-05-02 20:11:20 · 420 阅读 · 0 评论 -
POJ 2762 — Going from u to v or from v to u? 强连通+拓扑
原题:http://poj.org/problem?id=2762题意:给定n个点,m条有向边; 问是否满足图中任意两点单连通,即 u到v 或 v到u; 思路:首先用强连通缩点,然后直接判断是否为单链; 可以用拓扑的方式来判断,每次入度为0的点只能有一个;#include#include#include#include#includeusin原创 2015-05-03 00:06:54 · 438 阅读 · 0 评论 -
POJ 1986 — Distance Queries
原题:http://poj.org/problem?id=1986题意:有n个点,m条边,下面m行给定一棵树(后面那个字母并没有什么卵用); Q个询问,求两点间最短距离;话说,我并没有考虑不连通的情况,然而也过了……另外,注意数组大小;#include#include#include#include#includeusing namespace s原创 2015-04-21 20:19:50 · 413 阅读 · 0 评论 -
POJ 1470 — Closest Common Ancestors
原题:http://poj.org/problem?id=1470题意:有n个点,下面n行给定一棵树; Q个询问,统计lca的种类及个数;题目很水,就是输入好烦,最后找了discuss里大神的输入法#include#include#include#include#includeusing namespace std;const int N = 1原创 2015-04-21 19:44:28 · 375 阅读 · 0 评论 -
POJ 1330 — Nearest Common Ancestors
原题:http://poj.org/problem?id=1330裸的lca,只不过根不能从1开始#include#include#include#include#includeusing namespace std;const int N = 10005;bool vis[N];int head[N], fa[N][20], dep[N];int n, e;原创 2015-04-20 18:22:02 · 470 阅读 · 0 评论 -
ZOJ 3195 — Design the city
原题:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3195题意:有n个点,下面n-1行,输入两个点之间的距离。Q个询问,求联通三个点的最短长度; 裸LCA 直接贴代码了 ^_^#include#include#include#include#includeusing names原创 2015-04-14 21:19:15 · 435 阅读 · 0 评论 -
HDU 3078 — Network
原题:http://acm.hdu.edu.cn/showproblem.php?pid=3078题意:有n个点,Q个操作; 给出n个点的权值,接下来n-1行给定一棵树; 操作分两种:1、若k = 0,则将a的权值变成b的; 2、若k > 0,则求出a到b路径上权值第k大的数;思路:分别从u、v登山式的爬向lca(u, v),沿途记录每个点的权值;原创 2015-04-19 23:49:29 · 470 阅读 · 0 评论 -
HDU 2586 — How far away ?
原题:http://acm.hdu.edu.cn/showproblem.php?pid=2586题意:n个点,m个询问,下面n-1行给出两点间距离; 问两点间的最短距离;#include#include#include#include#includeusing namespace std;queueq;const int N = 40005;i原创 2015-04-19 22:13:22 · 439 阅读 · 0 评论 -
HDU 2444 — The Accomodation of Students 二分图+最大匹配
原题:http://acm.hdu.edu.cn/showproblem.php?pid=2444题意:有n个人,m对人相互认识;问能否分成两个组,组内任意两个人之间不认识;若不能,则输出No;若能,则相互认识的两个人一间房,求最多需要几间房;#include#include#include#include#includeusing namesp原创 2015-05-11 14:58:23 · 418 阅读 · 0 评论 -
HDU 3468 — Treasure Hunting BFS+二分匹配
原题:http://acm.hdu.edu.cn/showproblem.php?pid=3468题意:给定一个n*m的地图;.表示空地,#表示墙,*表示黄金;从A走到Z或者从a走到z;要求每次都按最短路走到下一个字母,且走的字母是连续的;若走不到下一个字母或者地图上不存在下一个字母就输出-1;每次走到下一个字母的途中可以拿一个黄金,问最多可以得到多少个黄金;原创 2015-05-11 22:32:27 · 522 阅读 · 0 评论 -
HDU 3549 — Flow Problem 入门题
原题:http://acm.hdu.edu.cn/showproblem.php?pid=3549题意:给定n个点,m条边,以及边上的容量,问1到n的最大流;#include#include#include#include#includeusing namespace std;#define inf 999999999;const int N = 20;int c原创 2015-05-06 21:47:35 · 415 阅读 · 0 评论 -
HDU 3729 — I'm Telling the Truth
原题:http://acm.hdu.edu.cn/showproblem.php?pid=3729题意:给出n个学生说的自己的考试排名范围;问最多有几个人说真话,并且输出字典序最大的一种(所以匹配时从n-1开始);思路:将学生作为X集,整个数轴作为y集,映射就是点和对应区间的每一个数;然后反向求最大匹配;#include #include原创 2015-05-15 21:29:19 · 481 阅读 · 0 评论 -
HDU 1068 — Girls and Boys 最大独立集
原题:http://acm.hdu.edu.cn/showproblem.php?pid=1068题意:给定一些男女生之间的暧昧关系,求一个最大的集合,使得集合中相互之间没有暧昧关系;思路:就是求最大独立集,最大独立集 = 顶点数 - 最大匹配;#include#include#include#include#includeusing nam原创 2015-05-15 14:41:12 · 427 阅读 · 0 评论 -
POJ 2455 — Secret Milking Machine 网络流+二分
原题:http://poj.org/problem?id=2455题意:有n个点,p条无向路,以及每条路的长度;找出从1到n的t条不同路径,每条路径上的路不能和其他的重复;问满足条件的所有边中最大的边权;思路:二分长度,再用网络流判断是否>=t;#include#include#include#include#include#include#原创 2015-05-13 18:40:48 · 589 阅读 · 0 评论