Pagini recente » Cod sursa (job #503254) | Cod sursa (job #2252144) | Cod sursa (job #2263540) | Cod sursa (job #2808265) | Cod sursa (job #166900)
Cod sursa(job #166900)
# include <stdio.h>
# include <string.h>
# include <vector>
using namespace std;
# define input "felinare.in"
# define output "felinare.out"
# define max 8200
# define minim(a,b) (a<b?a:b)
int n,i,j,T,r,m,x,y;
//int v[max][max];
vector <int> v[max];
int st[max],dr[max];
int nr;
int u[max];
int cupleaza(int nod)
{
if(u[nod]) return 0;
int i,j;
u[nod] = 1;
for(j=0;j<v[nod].size();j++)
{
i = v[nod][j];
if(!dr[i] || cupleaza(dr[i]))
{
st[nod] = i;
dr[i] = nod;
return 1;
}
}
return 0;
}
void cuplaj()
{
int i;
for(i = 1;i<= n;i++)
{
if(st[i]) continue;
if(cupleaza(i))nr++;
else
{
memset(u,0,sizeof(u));
if(cupleaza(i)) nr++;
}
}
}
int main()
{
freopen(input, "r", stdin);
freopen(output, "w", stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
// v[x][++v[x][0]] = y;
v[x].push_back(y);
}
cuplaj();
/* for(i=1;i<=n;i++)
printf("%d %d\n",st[i] , dr[i]);*/
printf("%d",2*n-nr);
return 0;
}