Pagini recente » Cod sursa (job #645151) | Cod sursa (job #1480055) | Cod sursa (job #2736088) | Cod sursa (job #1396473) | Cod sursa (job #1415119)
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream cin("cuplaj.in");
ofstream cout("cuplaj.out");
#define pb push_back
const int Nmax =10004;
int n,m,edges,i,x,y,L[Nmax],R[Nmax],V[Nmax],RS;
vector<int> G[Nmax];
int kuhn(int v)
{
if (V[v]) return 0;
V[v]=1;
for(int i=0;i<G[v].size();i++){
int to=G[v][i];
if (!R[to] || kuhn(R[to])){
L[v]=to; R[to]=v;
return 1;
}
}
return 0;
}
int main()
{
cin >> n >> m >> edges;
while (edges--){
cin >> x >> y;
G[x].pb(y);
}
for (int ok=1;ok;){ ok=0;
for (i=1;i<=n;i++)V[i]=0;
for(i=1;i<=n;i++)if (!L[i]) ok+=kuhn(i);
}
for (i=1;i<=n;i++)if (L[i])RS++;
cout << RS << '\n';
for (i=1;i<=n;i++) if (L[i])
cout << i << ' ' << L[i] << '\n';
return 0;
}