Pagini recente » Cod sursa (job #2465227) | Cod sursa (job #14449) | Cod sursa (job #1065423) | Cod sursa (job #330515) | Cod sursa (job #2408437)
#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],sol,ok;
vector <int> v[dim];
bitset <dim> f;
bool cupleaza(int nod){
if(f[nod]==1)
return 0;
f[nod]=1;
int x;
for(int i=0;i<v[nod].size();i++){
x=v[nod][i];
if(r[x]==0){
r[x]=nod;
l[nod]=x;
sol++;
return 1;
}
}
for(int i=0;i<v[nod].size();i++){
x=v[nod][i];
if(cupleaza(l[x])){
r[x]=nod;
l[nod]=x;
return 1;
}
}
return 0;
}
int main(){
fin>>n>>m>>k;
for(;k;k--){
fin>>i>>j;
v[i].push_back(j);
}
do{
f.reset();
ok=0;
for(i=1;i<=n;i++)
if(l[i]==0)
if(cupleaza(i))
ok=1;
}while(ok);
fout<<sol<<"\n";
for(i=1;i<=n;i++)
if(l[i]!=0)
fout<<i<<" "<<l[i]<<"\n";
return 0;
}