POJ 1422 Air Raid G++ 二分图最小边覆盖 背
程序员文章站
2022-06-02 20:25:41
...
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
//英语 看博友分析 抄博友程序 二分图最小边覆盖 背
int g[200][200];
int vis[200];
int link[200];
int n,m;
int dfs(int x)
{
for(int i=1;i<=n;i++)
{
if(vis[i]==0 && g[x][i]==1)
{
vis[i]=1;
if(link[i]==0||dfs(link[i]))
{
link[i]=x;
return 1;
}
}
}
return 0;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
memset(g,0,sizeof(g));
memset(link,0,sizeof(link));
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
g[x][y]=1;
}
int sum=0;
for(int i=1;i<=n;i++)
{
memset(vis,0,sizeof(vis));
if(dfs(i))
{
sum++;
}
}
cout<<n-sum<<endl;
}
return 0;
}