Pagini recente » Profil NuStiuCeNume | Cod sursa (job #1728129) | Cod sursa (job #1403072) | Cod sursa (job #1242945) | Cod sursa (job #2637545)
#include <bits/stdc++.h>
#define N 10000
using namespace std;
vector <int> G[N+1];
array <int, N+1> u, l, r;
int pairup (int n) {
if (u[n])
return 0;
u[n] = 1;
for (auto it: G[n])
if (!r[it]) {
l[n] = it;
r[it] = n;
return 1;
}
for (auto it: G[n])
if (pairup(r[it])) {
l[n] = it;
r[it] = n;
return 1;
}
return 0;
}
int main () {
ifstream fin ("cuplaj.in");
ofstream fout ("cuplaj.out");
int n, m, ct;
fin >> n >> m >> ct;
int i, j;
for (; ct; --ct) {
fin >> i >> j;
G[i].push_back(j);
}
bool changed = 1;
while (changed) {
changed = 0;
u.fill(0);
for (i=1; i<=n; ++i)
if (!l[i])
if (pairup(i))
changed = 1;
}
ct = 0;
fout << " \n";
for (i=1; i<=n; ++i)
if (l[i]) {
++ct;
fout << i << ' ' << l[i] << '\n';
}
fout.seekp(0);
fout << ct;
return 0;
}