Pagini recente » Cod sursa (job #3314656) | Cod sursa (job #742952) | Cod sursa (job #656375) | Borderou de evaluare (job #2359719) | Cod sursa (job #3336717)
#include <fstream>
#include <cstring>
#include <vector>
#define DIM 10001
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int n, m, k, x, y, cnt, st[DIM], dr[DIM];
bool viz[DIM];
vector<int> l[DIM];
bool dfs(int nod) {
if (viz[nod])
return false;
viz[nod] = 1;
for (auto vec : l[nod])
if (dr[vec] == 0 || dfs(dr[vec])) {
st[nod] = vec;
dr[vec] = nod;
return true;
}
return false;
}
int main() {
fin >> n >> m >> k;
while (k--) {
fin >> x >> y;
l[x].push_back(y);
}
for (int i = 1; i <= n; i++) {
memset(viz, false, sizeof(viz));
if (dfs(i))
cnt++;
}
fout << cnt << "\n";
for (int i = 1; i <= n; i++)
if (st[i] != 0)
fout << i << " " << st[i] << "\n";
return 0;
}