Air Raid---hdu1151(最小路径覆盖)

时间:2023-03-09 15:05:05
Air Raid---hdu1151(最小路径覆盖)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1151

最小路径覆盖 == 顶点数 - 最大匹配。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define N 130 int maps[N][N], vis[N], used[N], n, m, ans;
bool Find(int u)
{
for(int i=; i<=n; i++)
{
if(!vis[i] && maps[u][i])
{
vis[i] = ;
if(!used[i] || Find(used[i]))
{
used[i] = u;
return true;
}
}
}
return false;
} int main()
{
int T, x, y;
scanf("%d", &T);
while(T--)
{
memset(maps, , sizeof(maps));
memset(used, , sizeof(used));
scanf("%d%d", &n, &m);
while(m--)
{
scanf("%d%d", &x, &y);
maps[x][y] = ;
}
ans=;
for(int i=; i<=n; i++)
{
memset(vis, , sizeof(vis));
if(Find(i))
ans++;
}
printf("%d\n",n-ans);
}
return ;
}