Pagini recente » Cod sursa (job #2611485) | Cod sursa (job #2667434) | Cod sursa (job #1404777) | Cod sursa (job #1218493) | Cod sursa (job #2344591)
#include <bits/stdc++.h>
#define N 10005
using namespace std;
ifstream in("cuplaj.in");
ofstream out("cuplaj.out");
vector<int>a[N];
int l[N],r[N];
bool v[N];
bool func(int i){
if(v[i]) return 0;
v[i]=1;
for(auto it:a[i]){
if(!r[it]){
r[it]=i;
l[i]=it;
return 1;
}
}
for(auto it:a[i]){
if(func(r[it])){
r[it]=i;
l[i]=it;
return 1;
}
}
return 0;
}
int main(){
int n,m,x,y,s=0,i;
bool k=1;
in>>n>>m>>m;
for(i=1; i<=m; ++i){
in>>x>>y;
a[x].push_back(y);
}
while(k){
k=0;
memset(v,0,sizeof(v));
for(i=1; i<=n; ++i){
if(!l[i]){
x=func(i);
k=max(k,bool(x));
s+=x;
}
}
}
out<<s<<"\n";
for(i=1; i<=n; ++i)
if(l[i]) out<<i<<" "<<l[i]<<"\n";
return 0;
}