Pagini recente » Cod sursa (job #2729403) | Cod sursa (job #498261) | Cod sursa (job #964481) | Cod sursa (job #2111553) | Cod sursa (job #1359326)
#include <cstdio>
#include <vector>
#include <cstring>
#define pb push_back
using namespace std;
int m,n,e,st[10001],dr[10001],u[10001],nr,i,x,y,cup;
vector <int> g[100091];
bool cuplaj( int i)
{
if(u[i]) {return 0;}
u[i]=1;
for(vector <int> :: iterator it=g[i].begin();it!=g[i].end();++it)
{
if( cuplaj(dr[*it]) || !dr[*it])
{
st[i]=*it;
dr[*it]=i;
return 1;
}
}
return 0;
}
int main()
{
freopen("cuplaj.in","r",stdin);
freopen("cuplaj.out","w",stdout);
scanf("%d %d %d",&n,&m,&e);
for(i=1;i<=e;++i)
{
scanf("%d %d",&x,&y);
g[x].pb(y);
}
cup=1;
while(cup)
{ memset(u,0,sizeof(u));
cup=0;
for(i=1;i<=n;++i)
{
if(st[i]==0) cup+=cuplaj(i);
}
}
for(i=1;i<=n;++i)
{
if(st[i]) nr++;
}
printf("%d\n",nr);
for(i=1;i<=n;++i)
{
if(st[i]) printf("%d %d\n",i,st[i]);
}
return 0;
}