Pagini recente » Cod sursa (job #2043082) | Cod sursa (job #1329420) | Cod sursa (job #1689206) | Cod sursa (job #2249013) | Cod sursa (job #2569383)
#include <bits/stdc++.h>
#define Nmax 10005
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
int N, M, E, ans;
int le[Nmax], ri[Nmax];
bitset<Nmax> vis;
vector<int> G[Nmax];
bool match(int x) {
if (vis[x]) return 0;
vis[x] = 1;
for (auto y: G[x])
if (!le[y]) {
ri[x] = y;
le[y] = x;
return 1;
}
for (auto y: G[x])
if (match(le[y])) {
ri[x] = y;
le[y] = x;
return 1;
}
return 0;
}
int main()
{
f >> N >> M >> E;
for (int i = 1; i <= E; ++i) {
int x, y;
f >> x >> y;
G[x].push_back(y);
}
bool ok = 1;
while (ok) {
ok = 0;
for (int i = 1; i <= N; ++i)
if (!ri[i] && match(i)) ++ans, ok = 1;
vis.reset();
}
g << ans << '\n';
for (int i = 1; i <= N; ++i)
if (ri[i]) g << i << " " << ri[i] << '\n';
return 0;
}