Pagini recente » Cod sursa (job #307813) | Profil andrici_cezar | Cod sursa (job #3210979) | Cod sursa (job #2969176) | Cod sursa (job #3268949)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cuplaj.in");
ofstream fout("cuplaj.out");
int N,M,E,i,j,a,b,ans;
vector<int> A[100005];
vector<int> match; /// match[L] - R
vector<bool> viz;
bool try_kuhn(int k){
if (viz[k])
return false;
viz[k] = 1;
for (auto next_k : A[k]){
if (match[next_k] == -1 || try_kuhn(match[next_k])){
if (match[next_k] == -1)
ans++;
match[next_k] = k;
return true;
}
}
return false;
}
int main()
{
fin >> N >> M >> E;
for (i = 1;i <= E;i++){
fin >> a >> b;
A[a].push_back(b);
}
match.assign(M, -1);
for (i = 1;i <= N;i++){
viz.assign(N, false);
try_kuhn(i);
}
fout << ans << "\n";
for (i = 1;i <= M;i++){
if (match[i] != -1)
fout << match[i] << " " << i << "\n";
}
return 0;
}