Mai intai trebuie sa te autentifici.
Cod sursa(job #127104)
Utilizator | Data | 23 ianuarie 2008 13:45:31 | |
---|---|---|---|
Problema | Felinare | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.95 kb |
#include<stdio.h>
#include<string.h>
#define N 8200
int n,m,*a[N],st[N],dr[N],viz[N],nr,i,x,y;
int cupleaza(int nod)
{int i;
if(viz[nod]) return 0;
viz[nod]=1;
for(i=1;i<=a[nod][0];i++)
if(!dr[a[nod][i]] || cupleaza(dr[a[nod][i]]))
{st[nod]=a[nod][i];
dr[a[nod][i]]=nod;
return 1;}
return 0;}
void cuplaj()
{for(i=1;i<=n;i++)
if(!st[i])
if(cupleaza(i)) nr++;
else{
memset(viz,0,sizeof(viz));
if(cupleaza(i)) nr++;}
}
void citire()
{freopen("felinare.in","r",stdin);
scanf("%d %d",&n,&m);
for(i=1;i<=m;i++) {scanf("%d %d",&x,&y);viz[x]++;}
fclose(stdin);
for(i=1;i<=n;i++)
{a[i]=new int[viz[i]+2];
a[i][0]=0;}
freopen("felinare.in","r",stdin);
scanf("%d %d",&n,&m);
for(i=1;i<=m;i++) {scanf("%d %d",&x,&y);a[x][++a[x][0]]=y;}
memset(viz,0,sizeof(viz));}
int main()
{freopen("felinare.out","w",stdout);
citire();
cuplaj();
printf("%d",2*n-nr);
fclose(stdout);
return 0;}