#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int vis[110],match[110],g[110][110],x[110*110],y[110*110];
int dfs(int x){
for(int i=1;i<=m;i++){
if(!vis[i]&&g[x][i]){
vis[i]=1;
if(match[i]==-1||dfs(match[i])){
match[i]=x;
return 1;
}
}
}
return 0;
}
int hungary(){
int ret=0;
memset(match,-1,sizeof(match));
for(int i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
ret+=dfs(i);
}
return ret;
}
int main(){
int cas=1;
while(scanf("%d%d%d",&n,&m,&k)!=EOF){
memset(g,0,sizeof(g));
for(int i=0;i<k;i++){
scanf("%d%d",&x[i],&y[i]);
g[x[i]][y[i]]=1;
}
int ans=hungary(),cnt=0;
for(int i=0;i<k;i++){
g[x[i]][y[i]]=0;
if(hungary()<ans)cnt++;
g[x[i]][y[i]]=1;
}
printf("Board %d have %d important blanks for %d chessmen.\n",cas++,cnt,ans);
}
return 0;
}
10-06