[HDU 1151] Air Raid 最小路径覆盖
http://acm.hdu.edu.cn/showproblem.php?pid=1151
题意:在一个城镇,有m个路口,和n条路,这些路都是单向的,而且路不会形成环,现在要弄一些伞兵去巡查这个城镇,伞兵只能沿着路的方向走,问最少需要多少伞兵才能把所有的路口搜一遍。
【[HDU 1151] Air Raid 最小路径覆盖】思路:其实就是就求最小路径覆盖,对于有向无环图,最小路径覆盖 = 顶点数 - 最大匹配。
#include
#include
#include
#include using namespace std;
const int maxn = 125;
int n, m;
int pre[maxn];
bool vis[maxn];
vector mapn[maxn];
bool hungary(int rt)
{
int len = mapn[rt].size();
for(int i = 0;
i < len;
i++){
int now = mapn[rt][i];
if(!vis[now]){
vis[now] = true;
if(pre[now] == -1 || hungary(pre[now])){
pre[now] = rt;
return true;
}
}
}
return false;
}int main()
{
int Test;
scanf("%d", &Test);
while(Test--){
int x, y;
scanf("%d%d", &n, &m);
for(int i = 0;
i <= n;
i++){
mapn[i].clear();
}
for(int i = 0;
i < m;
i++){
scanf("%d%d", &x, &y);
mapn[x].push_back(y);
}
int sum = 0;
memset(pre, -1, sizeof(pre));
for(int i = 1;
i <= n;
i++){
memset(vis, false, sizeof(vis));
sum += hungary(i);
}
printf("%d\n", n-sum);
}
return 0;
}
推荐阅读
- The|The ideal servant
- 任务调度系统系列之Airflow
- 恒源云gpushare.com_Byte-Pair Encoding算法超详细讲解
- 使用Amazon CDK部署基于Amazon Fargate的高可用、易扩展的Airflow集群
- HDU 5528【2015长春现场赛 B】 Count a * b
- hdu5289|hdu5289 Assignment(极差<k的子区间数量,单调性证明+双指针+单调队列)
- hdu|2016 Multi-University Training Contest 1 C Game(hdu 5725)
- HDU-5628-Clarke-and-math-狄利克雷卷积
- HDU 5519 Kykneion asma(沈阳站K题&&DP+容斥)
- 主席树|HDU4417(主席树)