題目:兩個點之間可能有多條路線,求出從起點到終點的最短耗時
#include
#include
using namespace std;
#define maxn 999999
int n,m,g[
110]
[110
],dis[
110]
;bool visit[
110]
;int
dijkstra
(int src,
int des)
visit[src]
=true;
dis[src]=0
;for
(int i=
1;i<=n;i++)if
(temp==maxn)
break
; visit[k]
=true;
for(
int j=
1;j<=n;j++)}
return dis[des];}
intmain()
ans=
dijkstra(1
,n);
cout<}return0;
}
與上一題的區別就是起點和終點需要讀入,而且,存在不能找到從起點到終點的情況。思路是加乙個bl陣列初始化為0,出現過的城鎮置為1,只要那些城鎮都出現過,就一定有一條路從起點到終點。
要求路徑最短的時候,費用也最少。
int a , b , l , p ;
scanf
("%d%d%d%d"
,&a,
&b,&l,
&p);
if(g[a]
[b]>l)
else
if(g[a]
[b]==l && cost[a]
[b]>p)
for
(int j =
1; j<=n ; j++
)elseif(
!vis[j]
&& dis[k]
+g[k]
[j]==dis[j]
)}
題目:從起點到終點的最短路有m段,去掉其中某一段路可分別得到乙個新的最短路,求這些最短路中的最大值
#include
#include
const
int maxint =
999999
;int n, m;
int g[
1010][
1010
], dis[
1010
], vis[
1010];
int flag[
1010];
bool bl;
void
dijkstra
(int src)
*/ dis[src]=0
;for
(int i=
1;i<=n;i++)}
}}intmain()
bl = false;
dijkstra(1
);//實現一下標點
bl = true;
int maxx =0;
for(
int i = n ; i >
1; i = flag[i]
)printf
("%d\n"
,maxx );}
return0;
}
dijkstra演算法步驟
初始化:
1、將源點v
0v_0
v0加到s中,即s[v
0]=t
ru
es[v_0] = true
s[v0]
=tru
e;將v0到各個終點的最短路徑長度初始化為權值,即d[i
]=g.
arcs
[v0]
[vi]
,(vi
∈v−s
)d[i] = g.arcs[v0][vi],(vi∈v − s)
d[i]=g
.arc
s[v0
][vi
],(v
i∈v−
s);如果v
0v_0
v0和頂點v
iv_i
vi之間有弧,則將v
iv_i
vi的前驅置為v
0v_0
v0,即pat
h[i]
=v
0path[i] = v_0
path[i
]=v0
,否則pat
h[i]
=−
1path[i] = −1
path[i
]=−1
。2、選擇下一條最短路徑的終點vk,使得:
d [k
]=mi
nd[i
]∣vi
∈v−s
d[k] = min
d[k]=m
ind[
i]∣v
i∈v−
s3、將v
kv_k
vk加到s中,即s[v
k]=t
ru
es[v_k] = true
s[vk]
=tru
e。4、更新從v
0v_0
v0出發到集合v−s
v − s
v−s上任一頂點的最短路徑的長度,同時更改v
lv_l
vl的前驅為v
kv_k
vk。
若d [k
]+g.
arcs
[k][
l]
l] d[k]+g.arcs[k][l]d[ k]+g .arc s[k] [l]l] ,則d [l ]=d[ k]+g .arc s[k] [l]; path [l]= kd[l]=d[k]+g.arcs[k][l]; path [l]=k d[l]=d [k]+ g.ar cs[k ][l] ;pat h[l] =k;5、重複②~④ n−1次,即可按照路徑長度的遞增順序,逐個求得從v 0v_0 v0到圖上其餘各頂點的最短路徑。 ↩︎ 給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。input 輸入n,m,點的編號是1 n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為d,花費為p。最後一行是兩個數 s,... 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。input 本題目包含多組資料,請處... 使a中每項 1 a 0,1,2,3,4,5,6,7,8,9 for index,i in enumerate a a index i 1 a map lambda x x 1,a 構建匿名函式 a i 1 for i in range 10 重新構造了乙個列表 列表生成 l x x for x in...Day6 最短路徑 最短路徑問題
Day6 最短路徑 暢通工程續
新手Python學習記錄Day6