POJ Dijkstra計算最短路

2021-10-14 09:29:12 字數 2256 閱讀 7159

問題:計算1-n點到1點最短路徑。

思路:迴圈n次:

初始dis為無窮大,dis[1]=0;vis為false。

#include

#include

#include

using

namespace std;

const

int maxn =

510;

int n, m;

int g[maxn]

[maxn]

;bool vis[maxn]

;int dis[maxn]

;void

dijkstra()

vis[p]

=true

;for

(int j =

1; j <= n; j++)}

if(dis[n]

==0x3f3f3f3f

) cout <<-1

<< endl;

else

cout << dis[n]

<< endl;

}int

main()

dis[1]

=0;dijkstra()

;return0;

}

#include

#include

#include

#include

using

namespace std;

const

int maxn =

510;

int f, p, c, m;

int g[maxn]

[maxn]

;int dis[maxn]

;bool vis[maxn]

;int cow[maxn]

;int ans =0;

void

init()

}void

dijkstra()

}int

main()

} cout << ans << endl;

for(

int i =

0; i < ans; i++

) cout << cow[i]

<< endl;

return0;

}

題目:找到1點到n點的所有路徑中最短路徑的最大值(木桶效應中,記乙個桶的最短木板,找最短木板最長的桶)

思路:dijkstra的變體:

if

(!vis[j]

&&(t==-1

||dis[j]

——>if(

!vis[j]

&&(t==-1

||dis[j]

dis[j]

=min

(dis[j]

,dis[t]

+g[t]

[j])

——>

if(g[t]

[j])

//需要保證t、j之間有邊

dis[j]

=max

(dis[j]

,min

(dis[t]

,g[t]

[j])

)

//初始化

g=正無窮——>g=

0dis=正無窮——>dis=

0,dis[i]

=g[1

][i]

實現:

#include

#include

#include

#include

using

namespace std;

const

int maxn =

1010

;int g[maxn]

[maxn]

;bool vis[maxn]

;int dis[maxn]

;int t, n, m;

int cnt =0;

void

init()

for(

int i =

2; i <= n; i++

) dis[i]

= g[1]

[i];

}void

dijkstra()

}void

print()

intmain()

return0;

}

arcgis engine計算點到線的最短距離

iproximityoperator介面用於獲取兩個幾何圖形的距離,以及給定乙個point,求另乙個幾何圖形上離離給定點最近的點。iproximityoperator介面的主要方法有 querynearespoint,returndistance,returnnearestpoint returnd...

arcgis engine計算點到線的最短距離

iproximityoperator介面用於獲取兩個幾何圖形的距離,以及給定乙個point,求另乙個幾何圖形上離離給定點最近的點。iproximityoperator介面的主要方法有 querynearespoint,returndistance,returnnearestpoint returnd...

計算最短路徑的A 演算法簡介

還沒仔細看,比學的要深,特意留存學習 a 演算法是到目前為止最快的一種計算最短路徑的演算法,但它一種 較優 演算法,即它一般只能找到較優解,而非最優解,但由於其高效性,使其在實時系統 人工智慧等方面應用極其廣泛。因而我們可以發現,a 演算法成功與否的關鍵在於估價函式的正確選擇,從理論上說,乙個完全正...