Pagini recente » Cod sursa (job #2725319) | Cod sursa (job #2297297) | Cod sursa (job #222183) | Cod sursa (job #1429) | Cod sursa (job #1436531)
#include <fstream>
#include <vector>
using namespace std;
ifstream fi("cuplaj.in");
ofstream fo("cuplaj.out");
int n,m,v,viz[10001],x,y,i,j,rs,l[10001],r[10001];
vector <int> g[10001];
int cuplaj(int nod) {
viz[nod] = 1;
for (vector <int>::iterator it = g[nod].begin(); it != g[nod].end(); it++) {
if (!r[*it] || (!viz[r[*it]] && cuplaj(r[*it]))) {
l[nod] = *it;
r[*it] = nod;
return 1;
}
}
return 0;
}
int main() {
fi >> n >> m >> v;
for (i = 0; i < v; i++) {
fi >> x >> y;
g[x].push_back(y);
}
int ok = 1;
while (ok) {
ok = 0;
for (i = 1; i <= n; i++) {
viz[i] = 0;
}
for (i = 1; i <= n; i++) {
if (!l[i]) {
if (cuplaj(i)) {
rs++;
ok = 1;
}
}
}
}
fo << rs << endl;
for (i = 1; i <= n; i++) {
if (l[i]) {
fo << i << ' ' << l[i] << endl;
}
}
return 0;
}