#include<bits/stdc++.h>
using namespace std;
const int N=110;
int n,m,a,b,y;
int head[2*N],ver[20*N],nxt[20*N],tot;
int match[N],v[N],ans;
void add(int x,int y){
ver[++tot]=y;nxt[tot]=head[x];head[x]=tot;
}
bool dfs(int x){
for(int i=head[x];i;i=nxt[i]){
if(!v[y=ver[i]]){
v[y]=1;
if(!match[y]||dfs(match[y])){
match[y]=x;return true;
}
}
}
return false;
}
int main(){
cin>>m>>n;
while((cin>>a>>b)&&(a+b)!=-2)add(a,b);
for(int i=1;i<=m;i++){
memset(v,0,sizeof v);
if(dfs(i))ans++;
}
cout<<ans<<endl;
for(int i=m+1;i<=n;i++)if(match[i])cout<<match[i]<<" "<<i<<endl;
return 0;
}
无语,这份码是如何把样例的9对到5上的