Pagini recente » Cod sursa (job #2546913) | Cod sursa (job #1484841) | Cod sursa (job #2621471) | Cod sursa (job #80937) | Cod sursa (job #1418047)
#include <bits/stdc++.h>
using namespace std;
int i,j,k,n,m,e,a,b;
int lmatch[10013];
int rmatch[10013];
bool viz[10013];
vector <int> G[10013];
int Hopckroft(int nod)
{
if (viz[nod]) return 0;
viz[nod]=1;
vector <int>::iterator it;
for (it=G[nod].begin();it!=G[nod].end();++it)
if (!rmatch[*it] || Hopckroft(rmatch[*it]))
{
rmatch[*it]=nod;
lmatch[nod]=*it;
return 1;
}
return 0;
}
int main (void)
{
ifstream cin("cuplaj.in");
ofstream cout("cuplaj.out");
cin>>n>>m>>e;
while(e--)
{
cin>>a>>b;
G[a].push_back(b);
}
int cuplare(1);
while(cuplare)
{
cuplare=0;
memset(viz,0,sizeof viz);
for (i=1;i<=n;++i)
if (!lmatch[i])
cuplare+=Hopckroft(i);
}
int sol(0);
for (i=1;i<=n;++i)
if (lmatch[i]) ++sol;
cout<<sol<<"\n";
for (i=1;i<=n;++i)
if (lmatch[i])
cout<<i<<" "<<lmatch[i]<<"\n";
return 0;
}