| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求教,错哪了?#include <stdio.h>
int n,np,nc,m;
int a[552][552];
int xm[552],chk[552];
int ans;
int front,end,queue[1001];
int min(int a,int b)
{
if(a<b) return(a);
else return(b);
}
int bfs()
{
int v,u;
while(front<=end)
{
u=queue[front];
for(v=1;v<=n+1;v++)
if(a[u][v]&&!chk[v])
{
chk[v]=1;
xm[v]=u;
queue[++end]=v;
if(v==n+1)
return(1);
}
front++;
}
return(0);
}
int maxflew()
{
int tmp,t;
chk[0]=1;
front=1,end=1,queue[1]=0;
while(bfs())
{
t=n+1,tmp=a[xm[t]][t];
while(t!=0)
{
tmp=min(tmp,a[xm[t]][t]);
t=xm[t];
}
t=n+1;
while(t!=0)
{
a[xm[t]][t]-=tmp;
a[t][xm[t]]+=tmp;
t=xm[t];
}
ans+=tmp;
memset(chk,0,sizeof(chk));
front=1,end=1,queue[1]=0;
}
}
int main()
{
while(scanf("%d %d %d %d",&n,&np,&nc,&m)!=EOF)
{
memset(a,0,sizeof(a));
int i,j,k;
int u,v,z;
for(i=1;i<=m;i++)
{
scanf(" (%d,%d)%d",&u,&v,&z);
a[u+1][v+1]=z;
}
for(i=1;i<=np;i++)
{
scanf(" (%d)%d",&u,&z);
a[0][u+1]=z;
}
for(i=1;i<=nc;i++)
{
scanf(" (%d)%d",&u,&z);
a[u+1][n+1]=z;
}
ans=0;
maxflew();
printf("%d\n",ans);
// for(i=0;i<=n+1;i++)
// {
// for(j=0;j<=n+1;j++)
// printf("%d ",a[i][j]);
// printf("\n");
// }
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator