Pagini recente » Cod sursa (job #1556304) | Cod sursa (job #259054) | Cod sursa (job #2608367) | Cod sursa (job #2090718) | Cod sursa (job #2771475)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ipair pair<int, int>
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
const int mxN=1e4;
int n, m, k, mt[mxN+1];
vector<int> G[mxN+1];
bool vis[mxN+1];
bool dfs(int u)
{
vis[u]=1;
for(int v : G[u])
if(!mt[v] || !vis[mt[v]] && dfs(mt[v]))
{
mt[v]=u;
return 1;
}
return 0;
}
int main()
{
fin >> n >> m >> k;
for(int i=0; i<k; i++)
{
int a, b;
fin >> a >> b;
G[a].push_back(b);
}
int flow=0;
for(int i=1; i<=n; i++)
{
memset(vis, 0, sizeof(vis));
flow+=dfs(i);
}
fout << flow << '\n';
for(int i=1; i<=m; i++)
if(mt[i]!=0)
fout << mt[i] << ' ' << i << '\n';
return 0;
}