#include <iostream>#include <cstring>using namespace std;#define SIZE 150int 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;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)