Pagini recente » Cod sursa (job #1487024) | Cod sursa (job #2144779) | Cod sursa (job #284866) | Cod sursa (job #1671121) | Cod sursa (job #398216)
Cod sursa(job #398216)
#include<algorithm>
using namespace std;
#include<vector>
#define DIM 10005
vector <int> lst[DIM];
struct ok
{
int x,y;
} sol[DIM];
int n,m,s,v[DIM];
void read ()
{
int i,e,x,y;
scanf("%d%d%d",&n,&m,&e);
for(i=1;i<=e;++i)
{
scanf("%d%d",&x,&y);
lst[x].push_back (y);
}
}
int mp (int x)
{
int i;
if(v[x])
return 0;
v[x]=1;
for(i=0;i<lst[x].size ();++i)
if(!sol[lst[x][i]].y)
{
sol[x].x=lst[x][i];
sol[lst[x][i]].y=x;
return 1;
}
for(i=0;i<lst[x].size ();++i)
if(mp(sol[lst[x][i]].y))
{
sol[x].x=lst[x][i];
sol[lst[x][i]].y=x;
return 1;
}
return 0;
}
void solve ()
{
int i,ok;
do
{
for(i=1;i<=n;++i)
v[i]=0;
ok=0;
for(i=1;i<=n;++i)
if(!sol[i].x && mp(i))
{
++s;
ok=1;
}
}
while(ok);
}
void show ()
{
int i;
printf("%d\n",s);
for(i=1;i<=n;++i)
if(sol[i].x)
printf("%d %d\n",i,sol[i].x);
}
int main ()
{
freopen ("cuplaj.in","r",stdin);
freopen ("cuplaj.out","w",stdout);
read ();
solve ();
show ();
return 0;
}