Pagini recente » Cod sursa (job #443926) | Cod sursa (job #1089029) | Cod sursa (job #2551725) | Cod sursa (job #1658387) | Cod sursa (job #373588)
Cod sursa(job #373588)
#include <cstdio>
#include <vector>
#define MaxN 10024
using namespace std;
int N,M,st[MaxN],dr[MaxN],uz[MaxN],C,S,F;
vector <int> G[MaxN];
void cit()
{
int E,i,x,y;
freopen("cuplaj.in","r",stdin);
scanf("%d%d%d",&N,&M,&E);
for(i=1;i<=E;i++)
{
scanf("%d%d",&x,&y);
G[x].push_back(y);
}
}
int pairs(int nod)
{
int i;
if(uz[nod])
return 0;
uz[nod]=1;
for(i=0;i<G[nod].size();i++)
if(!dr[G[nod][i]] || pairs(G[nod][i]))
{
st[nod]=G[nod][i];
dr[G[nod][i]]=st[nod];
return 1;
}
return 0;
}
void cuplaj()
{
int i,sw=1;
while(sw)
{
sw=0;
memset(uz,0,sizeof(uz));
for(i=1;i<=N;i++)
if(!st[i] && pairs(i))
sw=1;
}
}
void afis()
{
freopen("cuplaj.out","w",stdout);
for(int i=1;i<=N;i++)
if(st[i])
C++;
printf("%d\n",C);
for(int i=1;i<=N;i++)
if(st[i])
printf("%d %d\n",i,st[i]);
}
int main()
{
cit();
cuplaj();
afis();
return 0;
}