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 |
用spfa做了一下oms给力!!!#include <stdio.h> #include <string.h> int d[1002],visit[1002],n; int edges[1005][1005]; int queue[1000001]; #define MAX 999999999 #define N 1001 void SPFA(int s) { int i; int front = 0, rear = 1,sum; memset(visit,0,sizeof(visit)); memset(queue,0,sizeof(queue)); for(i=1;i<=n;i++) d[i] = MAX; queue[front] = s; visit[s] = true; d[s] = 0; while(front<rear) { int u=queue[front]; visit[u]=0; for(int i=1; i<=n; i++) { if (d[i]>d[u]+ edges[u][i]) { d[i]=d[u]+edges[u][i]; if( !visit[i] ) { visit[i]=1; queue[rear++]=i; } } } front++; } sum=0; for(i=2;i<=n;i++) if(d[i]>sum) sum=d[i]; printf("%d\n",sum); } int cal(char str[]) { int i,res=0; if(str[0]=='x') return 0; for(i=0;str[i];i++) res=res*10+(str[i]-'0'); return res; } int main() { int i,j,t; char str[100]; while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++) { for(j=1;j<i;j++) { edges[i][j]=MAX; edges[j][i]=MAX; } } for(i=1;i<=n;i++) { for(j=1;j<i;j++) { scanf("%s",str); t=cal(str); if(!t) { edges[i][j]=MAX; edges[j][i]=MAX; } else { edges[i][j]=t; edges[j][i]=t; } } } SPFA(1); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator