摘要: 定义:在一个有向图中,找出最少的路径,使得这些路径,经过每一个点,且每一个点只与一条路径相关联,由上面得出:1.一个单独的点是一个路径2:如果有路径a,b,c。。。。f,g。a为起点,g为终点。那么a到g的点不在与其他点之间存在有向边。最小路径覆盖=点数---最大匹配数证明:1 如果匹配数为0,那么图中没有边,需要n条路径2 如果a,b之间连一条边,那么匹配数增1,需要的路径数会减少一,因为a,b之间只需要一条,那么就证明了**********************一个最好的利用是 把点分为i与i’点,建立二分图模板。View Code #include<iostream>#in 阅读全文
posted @ 2012-08-28 21:13 一把刷子 阅读(2468) 评论(0) 推荐(0) 编辑
摘要: http://livearchive.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=697题意:给定有向无环图,每个点代表一个城市,一些城市之间有边,在城市上放伞兵,伞兵可以管理在他这条路径上的所有城市,问最小放多少个伞兵,可以经过每一个城市,就是二分图的最小路径覆盖View Code #include<iostream>#include<string.h>#include<stdio.h>#include< 阅读全文
posted @ 2012-08-28 20:57 一把刷子 阅读(190) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=4160转化为二分图的最小路径覆盖问题。那么答案就是n-最大匹配数View Code #include<iostream>#include<string.h>#include<algorithm>#include<stdio.h>#include<vector>#define maxn 10000using namespace std;int n;struct node0{ int h,w,l;}node[maxn];vector<int> 阅读全文
posted @ 2012-08-28 20:17 一把刷子 阅读(141) 评论(0) 推荐(0) 编辑