時間限制
: 1000 ms
記憶體限制
: 65536 kb
提交數: 807
通過數: 373
平面上有
n個點(
n≤100
),每個點的座標均在
-10000~10000
之間。其中的一些點之間有連線。
若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點間的直線距離。現在的任務是找出從一點到另一點之間的最短路徑。
共n+m+3
行,其中
:第一行為整數n。
第2行到第n+1
行(共n
行),每行兩個整數x和
y,描述了乙個點的座標。
第n+2
行為乙個整數
m,表示圖中連線的個數。
此後的m
行,每行描述一條連線,由兩個整數i和
j組成,表示第
i個點和第
j個點之間有連線。
最後一行:兩個整數s和
t,分別表示源點和目標點。
一行,乙個實數(保留兩位小數),表示從s到
t的最短路徑長度。
5
0 0
2 0
2 2
0 2
3 1
5
1 2
1 3
1 4
2 5
3 5
1 5
3.41
no
#includeusing namespace std;
#define n 155
int main()
int m;
cin>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
f[i][j]=maxx;
for(i=1;i<=m;i++)//鄰接矩陣
int s,e;
cin>>s>>e;
double c[n];
int b[n];
for(i=1;i<=n;i++)
memset(b,0,sizeof(b));
b[s]=1;
c[s]=0;
int k;
for(i=1;i<=n-1;i++)
if(k==0) break;
b[k]=1;
for(j=1;j<=n;j++) //更新藍點
if(c[k]+f[k][j]c[j]=c[k]+f[k][j];
}printf("%.2lf",c[e]);
return 0;
}
Dijkstra最短路徑演算法
基本思路是 選擇出發點相鄰的所有節點中,權最小的乙個,將它的路徑設定為確定。其他節點的路徑需要儲存起來。然後從剛剛確認的那個節點的相鄰節點,算得那些節點的路徑長。然後從所有未確定的節點中選擇乙個路徑最短的設定為確定。重複上面步驟即可。void dijkstra graph g,string v fl...
Dijkstra最短路徑演算法
引入 dijkstra 迪傑斯特拉 演算法是典型的最短路徑路由演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法能得出最短路徑的最優解,但由於它遍歷計算的節點很多,所以效率低。package dijkstra p...
最短路徑 Dijkstra演算法
最短路徑 描述 已知乙個城市的交通路線,經常要求從某一點出發到各地方的最短路徑。例如有如下交通圖 則從a出發到各點的最短路徑分別為 b 0c 10 d 50 e 30 f 60 輸入 輸入只有乙個用例,第一行包括若干個字元,分別表示各頂點的名稱,接下來是乙個非負的整數方陣,方陣維數等於頂點數,其中0...