Pagini recente » Cod sursa (job #2350854) | Cod sursa (job #2612447) | Cod sursa (job #3257837) | Cod sursa (job #2533330) | Cod sursa (job #2685954)
#include <bits/stdc++.h>
using namespace std;
#define N 10005
int n, m, e, r[N], l[N], ans;
vector <int> v[N];
bool viz[N];
bool dfs(int q){
if (viz[q]) return 0;
viz[q] = 1;
for (auto it: v[q]){
if (!r[it] || dfs(r[it])){
l[q] = it;
r[it] = q;
return 1;
}
}
return 0;
}
int main(){
ifstream cin ("cuplaj.in");
ofstream cout ("cuplaj.out");
cin >> n >> m >> e;
for (int i=1, x, y; i<=e; i++){
cin >> x >> y;
v[x].push_back(y);
}
bool flag = 1;
while (flag){
flag = 0;
for (int i=1; i<=n; i++) viz[i] = 0;
for (int i=1; i<=n; i++){
if (!l[i] && dfs(i)){
flag = 1;
ans++;
}
}
}
cout << ans << '\n';
for (int i=1; i<=n; i++)
if (l[i]) cout << i << ' ' << l[i] << '\n';
return 0;
}