Pagini recente » Cod sursa (job #2804911) | Cod sursa (job #2474578) | Cod sursa (job #2448176) | Cod sursa (job #777895) | Cod sursa (job #414973)
Cod sursa(job #414973)
#include<fstream.h>
int luat[10100],start[10100],ver[100100],leg[100100],s[10100],d[10100],n;
int match(int nod)
{
if(luat[nod])
return 0;
luat[nod]=1;
int t=start[nod];
while(t)
{
if(!d[ver[t]]||match(d[ver[t]]))
{
s[nod]=ver[t];
d[ver[t]]=nod;
return 1;
}
t=leg[t];
}
return 0;
}
int main()
{
int i,m,e,q=0,ok=1,x,y,cuplaj=0;
ifstream f("cuplaj.in");
ofstream g("cuplaj.out");
f>>n>>m>>e;
while(e--)
{
f>>x>>y;
ver[++q]=y;
leg[q]=start[x];
start[x]=q;
}
while(ok)
{
ok=0;
for(i=1;i<=n;i++)
if(!s[i])
if(match(i))
{
cuplaj++;
ok=1;
}
for(i=1;i<=n;i++)
luat[i]=0;
}
g<<cuplaj<<'\n';
for(i=1;i<=n;i++)
if(s[i])
g<<i<<' '<<s[i]<<'\n';
return 0;
}