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 |
大牛们,刚学不久的高二菜鸟刚过这道题,希望大家教教SLF,LLL怎么实现,(附代码)#include<iostream> #include<cstdio> using namespace std; int queue[30010]; int road[150010][3]; long long value[30010]; bool q[30010]; int pre[150010]={0}; int last[30010]={0}; int n,m; int t; void spfa(int s) {int j,l=1,x,i; queue[l]=s; q[s]=true; while(l) {x=queue[l]; l=l-1; j=last[x]; while(j!=0) { if(value[road[j][1]]>value[x]+road[j][2]) {value[road[j][1]]=value[x]+road[j][2]; if(!q[road[j][1]]) {l=l+1; queue[l]=road[j][1]; q[road[j][1]]=true; } } j=pre[j]; } q[x]=false; } return;} int main() { int a,b,c; scanf("%d",&n); scanf("%d",&m); for(int i=1;i<=n;i++) {value[i]=2147483647; q[i]=false;} for(int i=1;i<=m;i++) {scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); road[i][0]=a; road[i][1]=b; road[i][2]=c; pre[i]=last[a]; last[a]=i;} value[1]=0; /*for(int i=m+1;i<=n+m;i++) {road[i][0]=0; road[i][1]=i-m; road[i][2]=0;}*/ spfa(1); printf("%d\n",value[n]-value[1]); //system("PAUSE"); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator