Pagini recente » Cod sursa (job #1146742) | Cod sursa (job #32388) | Cod sursa (job #430647) | Cod sursa (job #2627677) | Cod sursa (job #309001)
Cod sursa(job #309001)
#include<stdio.h>
#define NMAX 10001
struct lista {
int x;
lista *next;
};
int i,k=0,n,m,e,a,b,g[NMAX],r[NMAX];
lista* v[NMAX];
lista *q,*qm;
void init() {
for(int i=1;i<=n;i++) { v[i]=NULL; r[i]=0; }
for(int i=1;i<=m;i++) g[i]=0;
}
void add(int a,int b) {
lista *q=new lista;
q->x=b;
q->next=v[a];
v[a]=q;
g[b]++;
}
int main() {
freopen("cuplaj.in","r",stdin);
freopen("cuplaj.out","w",stdout);
scanf("%d %d %d",&n,&m,&e);
init();
for(i=0;i<e;i++) {
scanf("%d %d",&a,&b);
add(a,b);
}
for(i=1;i<=n;i++) {
q=qm=v[i];
while(q) {
if(!g[qm->x] || g[q->x]&&(g[q->x]<g[qm->x])) qm=q;
q=q->next;
}
if(qm && g[qm->x]) { r[i]=qm->x; g[qm->x]=0; k++; }
}
printf("%d\n",k);
for(i=1;i<=n;i++)
if(r[i]) printf("%d %d\n",i,r[i]);
fclose(stdout);
return 0;
}