Pagini recente » Cod sursa (job #1161102) | Cod sursa (job #307505) | Cod sursa (job #901765) | Cod sursa (job #832602) | Cod sursa (job #2724499)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int n, m, e;
vector<int> g[10005];
int l[10005], r[10005];
bool v[10005];
bool dfs(int x) {
v[x] = true;
for(auto next: g[x]) {
if(!l[next] || (!v[l[next]] && dfs(l[next]))) {
r[x] = next;
l[next] = x;
return true;
}
}
return false;
}
int main() {
fin >> n >> m >> e;
while(e--) {
int u, v;
fin >> u >> v;
g[u].push_back(v);
}
int nr = 0;
bool ok = true;
while(ok) {
ok = false;
for(int i = 1; i <= n; i++)
v[i] = false;
for(int i = 1; i <= n; i++)
if(!v[i] && !r[i] && dfs(i)) {
nr++;
ok = true;
}
}
fout << nr << '\n';
for(int i = 1; i <= n; i++)
if(r[i]) fout << i << ' ' << r[i] << '\n';
}