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 |
哪位大牛帮我看看哪错了吧...WA都不行了..#include<stdio.h> #include<string.h> #define INF 10000000 int m,n,cost; int p[101],r[101],map[101][101]; void input() { int i,j,k,a,b; scanf("%d%d",&m,&n); for(i=1;i<=n;i++) for(j=i;j<=n;j++) map[i][j]=map[j][i]=INF; for(i=1;i<=n;i++) { scanf("%d%d%d",&map[0][i],&r[i],&k); for(j=0;j<k;j++) { scanf("%d%d",&a,&b); map[a][i]=b; } } } int dijkstra() { int i,j,dj[101],mark[101]={0},ii; cost=map[0][1]; for(i = 1; i <= n; i++) { dj[i] = map[0][i]; } for(i=r[1]-m;i<=r[1];i++) { int number=n; memset(mark,0,sizeof(mark)); while(number--) { int v,min=INF; for(j=1;j<=n;j++) if(mark[j]==0 && r[i]>=i && r[i]<=(i+m) && min>dj[j]) { v=j;min=dj[j]; } mark[v]=1; for(ii = 1; ii <= n; ii++) if(map[v][ii]<INF && mark[ii]==0 && r[ii]>=i && r[ii]<=(i+m) && dj[ii]>dj[v]+map[v][ii]) dj[ii]=dj[v]+map[v][ii]; } if(cost>dj[1]) cost=dj[1]; } return cost; } int main() { input(); printf("%d\n",dijkstra()); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator