Pagini recente » Cod sursa (job #181549) | Cod sursa (job #304826) | Cod sursa (job #186948) | Cod sursa (job #1534745) | Cod sursa (job #1014328)
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
int n,m,e,l[10002],r[10002],f[10002];
vector <int> v[100002];
int cupl(int nod)
{
int i,nr=v[nod].size();
if(f[nod])
return 0;
f[nod]=1;
for(i=0;i<nr;++i)
if(!r[v[nod][i]])
{
l[nod]=v[nod][i];
r[v[nod][i]]=nod;
return 1;
}
for(i=0;i<nr;++i)
if(cupl(r[v[nod][i]]))
{
l[nod]=v[nod][i];
r[v[nod][i]]=nod;
return 1;
}
return 0;
}
int main()
{
freopen("cuplaj.in","r",stdin);
freopen("cuplaj.out","w",stdout);
int i,ok=1,nr=0,x,y;
scanf("%d%d%d",&n,&m,&e);
for(i=1;i<=e;++i)
{
scanf("%d%d",&x,&y);
v[x].push_back(y);
}
///////////////////
ok=1;
while(ok)
{
ok=0;
memset(f,0,sizeof(f));
for(i=1;i<=n;++i)
if(!l[i] && cupl(i))
ok=1;
}
nr=0;
for(i=1;i<=n;++i)
if(l[i])
++nr;
printf("%d\n",nr);
for(i=1;i<=n;++i)
if(l[i])
printf("%d %d\n",i,l[i]);
return 0;
}