Pagini recente » Cod sursa (job #2704609) | Cod sursa (job #2682478) | Cod sursa (job #269402) | Cod sursa (job #1865796) | Cod sursa (job #2456511)
#include <bits/stdc++.h>
using namespace std;
vector<int> G[10005];
int L[10005], R[10005];
int N, M, E;
bool seen[10005];
bool cuplat(int x) {
if (seen[x]) return 0;
seen[x] = 1;
for (auto p : G[x]) {
if (!R[p] || cuplat(R[p])) {
R[p] = x;
L[x] = p;
return 1;
}
}
return 0;
}
int main() {
ios_base::sync_with_stdio(false);
ifstream cin("cuplaj.in");
ofstream cout("cuplaj.out");
cin >> N >> M >> E;
for (int i = 1; i <= E; ++i) {
int u, v;
cin >> u >> v;
G[u].push_back(v);
}
bool ok = true;
int cup = 0;
while (ok) {
fill_n(seen + 1, 10000, 0);
ok = 0;
for (int i = 1; i <= N; ++i) {
if (!L[i] && cuplat(i)) {
ok = 1;
++cup;
}
}
}
cout << cup << "\n";
for (int i = 1; i <= N; ++i)
if (L[i]) cout << i << " " << L[i] << "\n";
}