Pagini recente » Cod sursa (job #1255823) | Cod sursa (job #1035780) | Cod sursa (job #2086273) | Cod sursa (job #2335438) | Cod sursa (job #1976830)
#include<bits/stdc++.h>
#define maxn (1<<16)
using namespace std;
int L[maxn],R[maxn],E,N,M,rs;
bitset<maxn> B;
vector <int> V[maxn];
int dfs(int v){
if(B[v]) return 0;
B[v] = 1;
for(auto vs:V[v]) if(R[vs]==0) return R[vs]=v, L[v] = vs;
for(auto vs:V[v]) if(dfs(R[vs])) return R[vs]=v, L[v] = vs;
return 0;
}
int main(){
ifstream cin("cuplaj.in");
ofstream cout("cuplaj.out");
cin >> N >> M >> E;
for(int x,y;E--;){
cin >> x >> y;
V[x].push_back(y);
}
for(int i = 1;i<=N;i++) if(L[i]==0 && dfs(i)) rs++, B = 0;
cout << rs << '\n';
for(int i = 1;i<=N;i++) if(L[i]) cout << i << ' ' << L[i] << '\n';
}