Pagini recente » Cod sursa (job #745887) | Cod sursa (job #575199) | Cod sursa (job #863922) | Cod sursa (job #709789) | Cod sursa (job #932434)
Cod sursa(job #932434)
#include<fstream>
#include<bitset>
#include<vector>
using namespace std;
#define BM 10005
#define it vector<int>::iterator
int n,m,nrm,dim;
bitset<BM> fol;
int st[BM],dr[BM];
vector<int> gr[BM];
int cp(int i){
it j;
if(fol[i])return 0;
fol[i]=1;
for(j=gr[i].begin();j!=gr[i].end();++j){
if(dr[*j]==0){
dr[*j]=i;
st[i]=*j;
return 1;
}
}
for(j=gr[i].begin();j!=gr[i].end();++j){
if(cp(dr[*j])){
st[i]=*j;
dr[*j]=i;
return 1;
}
}
return 0;
}
int main (){
int i,a,b,ok=1;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
f>>n>>m>>nrm;
for(;nrm;--nrm){
f>>a>>b;
gr[a].push_back(b);
}
for(;ok;){
ok=0;
fol&=0;
for(i=1;i<=n;++i)if(st[i]==0&&cp(i))++ok;
}
for(i=1;i<=n;++i)if(st[i])++dim;
g<<dim<<'\n';
for(i=1;i<=n;++i)if(st[i])g<<i<<' '<<st[i]<<'\n';
return 0;
}