Pagini recente » Cod sursa (job #52412) | Cod sursa (job #2943214) | Cod sursa (job #2599718) | Cod sursa (job #1219080) | Cod sursa (job #1121098)
#include<fstream>
#include<cstring>
#include<vector>
#define dim 10007
using namespace std;
ifstream f ("cuplaj.in");
ofstream g ("cuplaj.out");
int viz[dim],r[dim],l[dim];
int x,y,n,m,e,cnt;
vector<int >G[dim];
bool ok;
int cuplaj(int nod){
if(viz[nod])
return 0;
viz[nod]=1;
for(int i=0;i<G[nod].size();++i){
int fiu=G[nod][i];
if(!r[fiu] || cuplaj (r[fiu])){
r[fiu]=nod;
l[nod]=fiu;
return 1;
}
}
return 0;
}
int main () {
f>>n>>m>>e;
for(int i=1;i<=e;++i){
f>>x>>y;
G[x].push_back(y);
}
do {
ok=0;
memset(viz,0,sizeof(viz));
for(int i=1;i<=n;++i){
if(!l[i])
ok|=cuplaj(i);
}
}while(ok);
for(int i=1;i<=n;++i){
cnt+=(l[i]>0);
}
g<<cnt<<"\n";
for(int i=1;i<=n;++i){
if(l[i]){
g<<i<<" "<<l[i]<<"\n";
}
}
return 0;
}