Pagini recente » Cod sursa (job #2287329) | Cod sursa (job #3036481) | Cod sursa (job #108) | Cod sursa (job #825) | Cod sursa (job #2689671)
#include <bits/stdc++.h>
using namespace std;
const int N = 10010;
int n, m, e, l[N], r[N], ans;
vector <int> graph[N];
bool vis[N];
bool dfs(int node){
if (vis[node])
return 0;
vis[node] = 1;
for (int nei: graph[node]){
if (!r[nei] || dfs(r[nei])){
l[node] = nei;
r[nei] = node;
return 1;
}
}
return 0;
}
int main(){
ifstream cin("cuplaj.in");
ofstream cout("cuplaj.out");
cin >> n >> m >> e;
while (e--){
int a, b;
cin >> a >> b;
graph[a].push_back(b);
}
bool flag = 1;
while (flag){
flag = 0;
for (int i = 1; i <= n; ++i)
vis[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;
}