1151
wa
#include<bits/stdc++.h>
using namespace std;
int n,k;
int vis[130],s[130];
vector<int>m[130];
int dfs(int x){
for(int i=0;i<m[x].size();i++){
int y=m[x][i];
if(vis[y]==0){
vis[y]=1;
if(s[y]==0||dfs(s[y])){
s[y]=x;
return 1;
}
}
}
//忘记return 0;了
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
getchar();
scanf("%d",&k);
for(int i=1;i<=n;i++)
m[i].clear();
for(int i=1;i<=k;i++){
int x,y;
scanf("%d%d",&x,&y);
m[x].push_back(y);
}
int count=0;
memset(s,0,sizeof(s));
for(int i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
if(dfs(i))count++;
}
printf("%d\n",n-count);
}
return 0;
}
ac
#include<bits/stdc++.h>
using namespace std;
int n,k;
int vis[1000],s[1000];
vector<int>m[1000];
int dfs(int x){
for(int i=0;i<m[x].size();i++){
int y=m[x][i];
if(vis[y]==0){
vis[y]=1;
if(s[y]==0||dfs(s[y])){
s[y]=x;
return 1;
}
}
}
return 0;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
m[i].clear();
for(int i=1;i<=k;i++){
int x,y;
scanf("%d%d",&x,&y);
m[x].push_back(y);
}
int count=0;
memset(s,0,sizeof(s));
for(int i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
if(dfs(i))count++;
}
printf("%d\n",n-count);
}
return 0;
}