Pagini recente » Cod sursa (job #2533741) | Cod sursa (job #138300) | Cod sursa (job #514466) | Cod sursa (job #3144940) | Cod sursa (job #2563591)
#include <fstream>
#include <vector>
#include <bitset>
#define dim 10010
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int n,m,i,j,k,L[dim],R[dim],cnt;
vector <int> l[dim];
bitset <dim> f;
bool ok;
bool cupl(int nod){
if(f[nod])
return 0;
f[nod]=1;
for(int i=0;i<l[nod].size();i++){
int vec=l[nod][i];
if(R[vec]==0){
cnt++;
R[vec]=nod;
L[nod]=vec;
return 1;
}
}
for(int i=0;i<l[nod].size();i++){
int vec=l[nod][i];
if(cupl(R[vec])){
R[vec]=nod;
L[nod]=vec;
return 1;
}
}
return 0;
}
int main(){
fin>>n>>m>>k;
for(;k;k--){
fin>>i>>j;
l[i].push_back(j);
}
do{
ok=0;
f.reset();
for(i=1;i<=n;i++)
if(!L[i])
if(cupl(i))
ok=1;
}while(ok);
fout<<cnt<<"\n";
for(i=1;i<=n;i++)
if(L[i])
fout<<i<<" "<<L[i]<<"\n";
return 0;
}