Pagini recente » Statistici Tudor Daniel Marin (rapidistulfioros) | Cod sursa (job #1699147) | Cod sursa (job #771089) | Cod sursa (job #2080656) | Cod sursa (job #1022745)
#include<cstdio>
#include<vector>
using namespace std;
/////////////////////////////////////////////////////////////cuplajul
int i,j,n,m,urm[8300],prec[8300],C[8300];
vector < int > v[8300];
bool cup(int nod)
{
if(C[nod]==1) return 0;
C[nod]=1;
vector < int > :: iterator it;
for(it=v[nod].begin();it!=v[nod].end();it++)
if(prec[*it]==0)
{
prec[*it]=nod;
urm[nod]=*it;
return 1;
}
for(it=v[nod].begin();it!=v[nod].end();it++)
if(cup(prec[*it]))
{
prec[*it]=nod;
urm[nod]=*it;
return 1;
}
return 0;
}
int cuplaj()
{
int i,ok=1;
for(i=1;i<=n;i++)
C[i]=urm[i]=prec[i]=0;
while(ok)
{
ok=0;
for(i=1;i<=n;i++)
C[i]=0;
for(i=1;i<=n;i++)
if(urm[i]==0) ok+=cup(i);
}
ok=0;
for(i=1;i<=n;i++)
ok+=(urm[i]>0);
return ok;
}
////////////////////////////////////////////////////
int main()
{
freopen("felinare.in","r",stdin);
freopen("felinare.out","w",stdout);
scanf("%d",&n);
scanf("%d",&m);
while(m)
{
m--;
scanf("%d",&i);
scanf("%d",&j);
v[i].push_back(j);
}
printf("%d\n",2*n-cuplaj());
return 0;
}