Pagini recente » Cod sursa (job #1686693) | Cod sursa (job #2320611) | Cod sursa (job #1410760) | Cod sursa (job #1063094) | Cod sursa (job #404057)
Cod sursa(job #404057)
#include<fstream.h>
int pus[10100],ver[100100],leg[100100],start[10100],s[10100],d[10100];
int match(int nod)
{
if(pus[nod])
return 0;
pus[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 n,m,e,q=0,i,ok=1,cuplaj=0,x,y;
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++)
pus[i]=0;
for(i=1;i<=n;i++)
if(!s[i])
if(match(i))
{
ok=1;
cuplaj++;
}
}
g<<cuplaj;
return 0;
}