#include <iostream>
#include <cstring>
using namespace std;
#define SIZE 150
int n;
int map[SIZE][SIZE];
int visited[SIZE];
int match[SIZE];
int Hungary(int u){ //hungary匈牙利
int i;
for(i = 1; i <= n; i++){
if(!visited[i] && map[u][i]){
visited[i] = 1;
if(match[i] == 0 || Hungary(match[i])){
match[i] = u;
return 1;
}
}
}
return 0;
}
int main(){
int iCase;
int m, from, to, i;
cin>>iCase;
while(iCase--){
memset(map, 0, sizeof(map));
memset(match, 0, sizeof(match));
cin>>n>>m;
for(i = 0; i < m; i++){
cin>>from>>to;
map[from][to] = 1;
}
int ans = 0;
for(i = 1; i <= n; i++){
memset(visited, 0, sizeof(visited));
if(Hungary(i))
ans++;
}
cout<<n - ans<<endl;
}
return 0;
}
ZOJ 1525 air raid
猜你喜欢
转载自blog.csdn.net/fofu33/article/details/16360449
今日推荐
周排行