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 <iostream> #include <stdlib.h> #include <math.h> #include <string.h> #include <vector> #include <queue> #define MAXV 1000006 #define INF 0xfffffff using namespace std; struct edge{ int val; int to; }; vector <edge> e[MAXV]; int dist[MAXV]; queue <int> buff; bool visit[MAXV]; int E,V; int a[MAXV],b[MAXV],l[MAXV]; void spfa( const int st ) { for( int i=1 ; i<=V ; i++ ){ dist[i] = INF; if( i == st ) dist[i] = 0; visit[i] = false; } visit[st] = true; buff.push( st ); visit[st] = true; while( !buff.empty() ){ int tmp = buff.front(); for( int i=0 ; i<(int)e[tmp].size() ; i++ ){ edge *t = &e[tmp][i]; if( dist[tmp] + t->to < dist[t->to] ){ dist[t->to] = dist[tmp] + t->val; if( !visit[t->to] ){ buff.push( t->to ); visit[t->to] = true; } } visit[tmp] = false; buff.pop(); } } int main( ) { int cas; scanf("%d",&cas); while( cas-- ){ scanf("%d%d",&V,&E); for( int i=0 ; i<E ; i++ ){ scanf("%d%d%d",&a[i],&b[i],&l[i]); edge tmp; tmp.val = l[i]; tmp.to = b[i]; e[ a[i] ].push_back( tmp ); } long long ans = 0 ; spfa( 1 ); for( int i=1 ; i<=V ; i++ ) ans += dist[i]; for( int i=1 ; i<=V ; i++ ) e[i].clear(); for( int i=0 ; i<E ; i++ ){ edge tmp; tmp.val = l[i]; tmp.to = a[i]; e[ b[i] ].push_back( tmp ); } spfa( 1 ); for( int i=1 ; i<=V ; i++ ) ans += dist[i]; for( int i=1 ; i<=V ; i++ ) e[i].clear(); printf("%ld\n",ans); } //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