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 |
我的dijstraWA了30多回了……实在不知道为什么,高手帮忙看看吧,拜托了#include <string.h> #include <iostream> using namespace std; const int maxn = 4110; const int maxint = 10000001; unsigned int nearvex[ maxn ],lowcost[ maxn ],table[ maxn ][ maxn ]; int n , tt; void Dijkstra(int st,int end) { int i,j; for(i=1;i<=n;i++) { nearvex[i] = 0; lowcost[i] = table[ i ][st]; } nearvex[ st ] = 1; lowcost [ st ] = 0; for(i=1;i<=n;i++) { int min = maxint; int pmin = -1; for(j=1;j<=n;j++) if(nearvex[j] != 1 && lowcost[j] < min ) { min = lowcost[j]; pmin = j; } if ( end == pmin ) return ; if( pmin >=0 ) { nearvex[pmin] = 1; for(j=1;j<=n;j++) if(nearvex[j] ==0 && (lowcost[pmin] + table[ j ][ pmin ] < lowcost[j]) && table [ j ] [min ]<maxint ) lowcost[j] = lowcost[pmin] + table[j][pmin]; } } } int main() { int i , j , index1 , index2 , tmp; cin>>n>>tt; for ( i = 1 ; i <= n ; i ++ ) for ( j = 1 ; j <=n ; j ++ ) table [ i ] [ j ] = table [ j ] [ i ] = maxint; for ( i = 1 ; i <=n ; i ++ ) table [ i ] [ i ] = 0; for ( i = 0 ; i < tt ; i ++ ) { cin>>index1>>index2>>tmp; if ( tmp < table [ index1 ] [index2 ] ) table [ index1 ] [ index2 ] = table [ index2 ] [index1 ]= tmp; } Dijkstra(1,n); cout<<lowcost [ n ] <<endl; //cin>>n; return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator