Pagini recente » Cod sursa (job #965210) | Cod sursa (job #2810946) | Cod sursa (job #2023525) | Cod sursa (job #596921) | Cod sursa (job #2550791)
#include <iostream>
#include <fstream>
#include <vector>
#include<cstring>
using namespace std;
vector<int> v[10005];
int f[10005],dre[10005];
bool func(int i){
int ok=0;
f[i]=1;
for(auto it:v[i]){
if(dre[it]==0){
dre[it]=i;
return true;
}
}
for(auto it:v[i]){
if(f[dre[it]]==0)
if(func(dre[it])){
dre[it]=i;
return true;
}
}
return false;
}
int main()
{
//ifstream cin("cuplaj.in");
//ofstream cout("cuplaj.out");
cin.tie(0);
ios::sync_with_stdio(false);
int n,m,e,st,dr,sum=0;
cin>>n>>m>>e;
for(int i=1;i<=e;i++){
cin>>st>>dr;
v[st].push_back(dr);
}
for(int i=1;i<=n;i++){
//cout<<i<<"\n";
memset(f,0,sizeof(f));
sum+=func(i);
}
cout<<sum<<"\n";
for(int i=1;i<=m;i++){
if(dre[i]!=0){
cout<<dre[i]<<" "<<i<<"\n";
}
}
return 0;
}