Pagini recente » Cod sursa (job #177193) | Cod sursa (job #43120) | Cod sursa (job #691149) | Cod sursa (job #2806651) | Cod sursa (job #2980874)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream in("cuplaj.in");
ofstream out("cuplaj.out");
const int NMAX=10005;
vector<vector<int>>G(NMAX);
int L[NMAX],R[NMAX];
bool viz[NMAX];
int N,M,E;
bool pair_up(int node){
if(viz[node])
return 0;
viz[node]=1;
int i;
for(auto i:G[node]){
if(!R[i]){
R[i]=node;
L[node]=i;
return 1;
}
}
for(auto i:G[node]){
if(pair_up(R[i])){
L[i]=node;
R[node]=i;
return 1;
}
}
return 0;
}
int main(){
int u,v;
in>>N>>M>>E;
int i,ans=0;
for(i=1; i<=E; i++){
in>>u>>v;
G[u].push_back(v);
G[v].push_back(u);
}
bool ok=1;
while(ok){
ok=0;
memset(viz,0,sizeof(viz));
for(i=1; i<=N; i++)
if(!L[i])
if(pair_up(i))
ok=1;
}
for(i=1; i<=N; i++)
if(L[i])
ans++;
out<<ans<<'\n';
for(i=1; i<=N; i++)
if(L[i])
out<<i<<" "<<L[i]<<'\n';
return 0;
}