Pagini recente » Cod sursa (job #3143542) | Cod sursa (job #2295920) | Cod sursa (job #2939816) | Cod sursa (job #2367711) | Cod sursa (job #2510125)
#include <fstream>
#include <vector>
#include <bitset>
#define dim 10001
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int n,m,i,j,e,l[dim],r[dim],sol;
vector <int> v[dim];
bitset <dim> f;
bool cupl(int nod){
if(f[nod])
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(cupl(r[x])){
r[x]=nod;
l[nod]=x;
return 1;
}
}
return 0;
}
int main(){
fin>>n>>m>>e;
for(;e;e--){
fin>>i>>j;
v[i].push_back(j);
}
bool ok;
do{
f.reset();
ok=0;
for(i=1;i<=n;i++)
if(l[i]==0)
if(cupl(i))
ok=1;
}while(ok);
fout<<sol<<"\n";
for(i=1;i<=n;i++)
if(l[i])
fout<<i<<" "<<l[i]<<"\n";
return 0;
}