Pagini recente » Cod sursa (job #1516669) | Cod sursa (job #2383505) | Cod sursa (job #3132311) | Cod sursa (job #1950591) | Cod sursa (job #281222)
Cod sursa(job #281222)
#include<stdio.h>
#include<string.h>
#define N 10001
FILE *f=fopen("cuplaj.in","r");
FILE *out=fopen("cuplaj.out","w");
int g[N][N];
int s[N],d[N],v[N],n,m,cnt;
int pair(int o){
if(v[o]==1) return 0;
v[o]=1;
int x;
for(x=1;x<=g[o][0];x++){
if(!d[g[o][x]]){
s[o]=g[o][x];
d[g[o][x]]=o;
return 1;
}
}
for(x=1;x<=g[o][0];x++) {
if(pair(d[g[o][x]])){
s[o]=g[o][x];
d[g[o][x]]=o;
return 1;
}
}
return 0;
}
void date(){
int x,y;
fscanf(f,"%d%d%d",&n,&m,&cnt);
for(; cnt-- ; ){
fscanf(f,"%d%d",&x,&y);
g[x][++g[x][0]]=y;
}
}
int main(){
date();
int stare;int i,nr=0;
for(stare=1; stare ; ){
memset(v,0,sizeof(v));
stare=0;
for(i=1;i<=n;i++)if(!s[i]) stare |= pair(i);
}
for(i=1;i<=n;i++) if(s[i]>0) nr++;
fprintf(out,"%d\n",nr);
for(i=1;i<=n;i++) if(s[i]>0) fprintf(out,"%d %d\n",i,s[i]);
return 0;
}