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 |
table [ j ] [min ]<maxint 少写个pIn Reply To:我的dijstraWA了30多回了……实在不知道为什么,高手帮忙看看吧,拜托了 Posted by:secretsh at 2006-10-28 23:22:12 > #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