Topic Transfer: http://hihocoder.com/problemset/problem/1081
1#include <iostream>2#include <cstdio>3#include <cstring>4 #defineINF 0x03f3f3f3f5 #defineN 10246 intPath[n], vis[n];7 intCost[n][n],lowcost[n];8 voidDijkstra (intNintBeg) {9 intI, J, Min;Tenmemset (Vis,0,sizeof(Vis)); OneVis[beg] =1; A for(i=0; i<n; i++) - { -Lowcost[i] = Cost[beg][i]; Path[i] =Beg; the } -Lowcost[beg] =0; -Path[beg] =-1;// - intPre =Beg; + for(i=1; i<n; i++){ -Min =INF; + for(j=0; j<n; J + +) A if(vis[j]==0&& lowcost[pre]+cost[pre][j]<Lowcost[j]) at { -LOWCOST[J] = Lowcost[pre] +Cost[pre][j]; -PATH[J] =Pre; - } - for(j=0; j<n; J + +) - if(Vis[j] = =0&& Lowcost[j] <min) { inmin = Lowcost[j]; Pre =J; - } toVis[pre] =1; + } - } the intMain () { * intn,m,s,t,i,k,a,b,c; $scanf"%d%d%d%d",&n,&m,&s,&t);Panax Notoginsengmemset (Cost,inf,sizeof(cost)); - for(i =0; i<m;i++){ thescanf"%d%d%d",&a,&b,&c); + if(c<cost[a-1][b-1]){ Acost[a-1][b-1] =C; thecost[b-1][a-1] =C; + } - } $Dijkstra (n, S1); $printf"%d\n", lowcost[t-1]); - return 0; -}
Shortest path One Dijkstra template (O (n^2))