摘要:
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1151题目大意:考虑一个城市的街道都是单向的并且所有的道路都是从一个十字路口到另一个十字路口。从一个起点出发,沿着路走你永远都不可能回到起点,也就是说道路没有环。对于这样的一个假设,你的任务是编写一个程序,它可以找到让最小数量的伞兵,他们可以沿着路走经过所有的十字路口。而且一个十字路口不能被两个,或两个以上的人经过。每一个伞兵降落在一个十字路口,可以访问其他城镇街道后的十字路口。没有限制的起动交叉对于每个伞兵。解题思路:因为街道是有向的,而且不存在环,要到达所有的顶点我们可以转换为二分图的最小路径覆 阅读全文
摘要:
【基本概念】:二分图:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。最大匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配. 选择这样的边数最大的子集称为图的最大匹配问题,如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹. 阅读全文
摘要:
//二分图的最小顶点覆盖数=最大匹配数//本题就是求最小顶点覆盖数的。#include#include#define maxn 105int n,m,k;bool map[maxn][maxn],mark1[maxn];int mark[maxn];bool dfs(int v){ for(int i = 1; i <= m; i++) { if(mark1[i] || !map[v][i]) continue; mark1[i] = true; if(!mark[i] || dfs(mark[i])) { mark[i] = v; return true; } } re... 阅读全文
摘要:
过山车Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5297 Accepted Submission(s): 2341Problem DescriptionRPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Gras 阅读全文