Pagini recente » Cod sursa (job #1188772) | Cod sursa (job #1682997) | Cod sursa (job #168258) | Profil Leonard1998 | Cod sursa (job #1454045)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
#define MAXN 10000
int n,m,e;
int f[MAXN];
vector<int> ed[MAXN];
vector<bool> us;
vector<int> mt;
bool kuhn (int x)
{
if (us[x]) return false;
us[x] = 1;
for (auto i:ed[x])
if (mt[i]==-1 || kuhn(mt[i]))
{
mt[i] = x;
return true;
}
return false;
}
int main()
{
fin>>n>>m>>e;
for (int i=0; i<e; i++)
{
int x,y;
fin>>x>>y;
x--,y--;
ed[x].push_back(y);
}
mt.assign(m,-1);
for (int i=0; i<n; i++)
{
us.assign(n,0);
kuhn(i);
}
int ans = 0;
for (int i=0; i<m; i++)
if (mt[i]+1) ans++;
fout<<ans<<'\n';
for (int i=0; i<m; i++)
if (mt[i]+1) fout<<mt[i]+1<<' '<<i+1<<'\n';
return 0;
}