Pagini recente » Cod sursa (job #2219922) | Cod sursa (job #1803873) | Cod sursa (job #165013) | Cod sursa (job #1639961) | Cod sursa (job #2988811)
#include <fstream>
#include <vector>
#define DIM 10005
using namespace std;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
int n, m, k, cnt;
int L[DIM], R[DIM];
vector<int> edges[DIM];
bitset<DIM> viz;
bool cupleaza(int node) {
if (viz[node]) {
return false;
}
viz[node] = 1;
for (auto k: edges[node]) {
if (!R[k]) {
R[k] = node;
L[node] = k;
viz[node] = 0;
cnt++;
return true;
}
}
for (auto k: edges[node]) {
if (cupleaza(R[k])) {
R[k] = node;
L[node] = k;
viz[node] = 0;
return true;
}
}
return false;
}
int main() {
f >> n >> m >> k;
while (k--) {
int x, y;
f >> x >> y;
edges[x].push_back(y);
}
for (int i = 1; i <= n; i++) {
cupleaza(i);
}
g << cnt << "\n";
for (int i = 1; i <= n; i++) {
if (L[i]) {
g << i << " " << L[i] << "\n";
}
}
return 0;
}