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 |
Re:Accept代码!理解了就超简单!In Reply To:Accept代码!理解了就超简单! Posted by:slow at 2011-01-11 11:56:13 > #include <iostream> > #include<cmath> > #include<cstring> > #include<stdlib.h> > #include<stdio.h> > using namespace std; > #define MAX 0x7fffffff > #define Min(a, b) ((a) < (b) ? (a) : (b)) > int map[1010][1010],dis[1010]; > int mark[1010]; > int n,m,s,t,W=0; > void Dijkstra() > { > int i , j , k , min ; > for( i = 1 ; i <= n ; i++ ) > { > mark[i] = 0 ; > if(map[1][i]!=0) > dis[i] = map[1][i] ; > else > dis[i]=MAX; > } > mark[1] = 1 ; > for( i = 1 ; i < n ; i++ ) > { > min = 0; > for( j = 1 ; j <= n ; j++ ) > if(!mark[j] && dis[j] > min&&dis[j]!=MAX) > { > min = dis[j]; > k = j ; > } > mark[k] = 1; > for( j = 1 ; j <= n ; j++ ) > if(!mark[j] ) > { > int Q; > Q=Min(dis[k],map[k][j]); > if(dis[j]<Q&&map[k][j]!=0) > { > dis[j] = Q; > } > } > } > printf("Scenario #%d:\n%d\n\n",W,dis[n]); > } > int main() > { > int i , j , x , y , d,N ; > scanf("%d",&N); > while(N--) > { > scanf("%d %d",&n,&m); > W++; > memset(map,0,sizeof(map)); > > for( i = 1 ; i <= m ; i++ ) > { > scanf("%d %d %d",&x,&y,&d); > map[x][y] = map[y][x] = d ; > } > Dijkstra(); > } > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator