Pagini recente » Cod sursa (job #1490500) | Cod sursa (job #2851309) | Cod sursa (job #2254377) | Cod sursa (job #618394) | Cod sursa (job #273716)
Cod sursa(job #273716)
#include<fstream.h>
#include<string.h>
#define nx 10005
struct graf
{
int nod;graf *next;
};
graf *g[nx];
int v[nx],vizN[nx],vizM[nx],n,m,e;
int cuplaj(int x)
{
v[x]=1;
graf *q=new graf;
for (q=g[x];q;q=q->next)
if (!vizM[q->nod])
{
vizM[q->nod]=x;
vizN[x]=q->nod;
return 1;
}
q=new graf;
for (q=g[x];q;q=q->next)
if (!v[vizM[q->nod]])
if (cuplaj(vizM[q->nod]))
{
vizM[q->nod]=x;
vizN[x]=q->nod;
return 1;
}
return 0;
}
int main()
{
ifstream be ("cuplaj.in");
ofstream ki ("cuplaj.out");
be>>n>>m>>e;
int i,x,y,ok=1,sz=0;
for (i=1;i<=e;i++)
{
be>>x>>y;
graf *q=new graf;
q->nod=y;
q->next=g[x];
g[x]=q;
}
be.close();
ok=1;
while (ok)
{
ok=0;
memset(v,0,sizeof(v));
for (i=1;i<=n;++i)
if (!vizN[i])
if (cuplaj(i))
{
ok=1;
sz++;
}
}
ki<<sz<<'\n';
for (i=1;i<=n;++i)
if (vizN[i])
ki<<i<<" "<<vizN[i]<<'\n';
ki.close();
return 0;
}