| ||||||||||
| 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"
#include "string.h"
#include "iostream.h"
#define Max 100000000
int cost[1001],succ[1001],C[1001][1001],tag[1001][1001],n;
int f(int j,int k)
{
if(cost[j]==0)
{
if(j==k) cost[j]=0;
else
{
int min=Max,i,i0=0;
for(i=1;i<=n;i++)
if(C[j][i]<Max&&tag[i][j]!=1)
{
tag[i][j]=1;
int x=f(i,k);
if((x+C[j][i])<min)
{
min=x+C[j][i];
i0=i;
}
}
memset(tag,0,sizeof(tag));
cost[j]=min;succ[j]=i0;
}
}
return cost[j];
}
int main()
{
int i,j,p,m,k;
cin>>n>>m>>k;
for(i=1;i<=n;i++)
{cost[i]=0;}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
C[i][j]=Max;
}
for(int t=1;t<=m;t++)
{
scanf("%d%d%d",&i,&j,&p);
C[i][j]=p;
}
int max=-Max;
for(i=1;i<=n;i++)
{
if(i!=k){
int s=f(i,k);
memset(tag,0,sizeof(tag));
memset(cost,0,sizeof(cost));
int t=f(k,i);
memset(tag,0,sizeof(tag));
memset(cost,0,sizeof(cost));
if(max<s+t&&s!=Max&&t!=Max) max=s+t;
}
}
if(-Max==max) printf("0\n");
else if(max<Max) printf("%d\n",max);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator