【題目描述】:
平面上有n個點,每個點的座標均在-10000~10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點間的直線距離。現在的任務是找出從一點到另一點之間的最短路徑。
【輸入描述】:
輸入檔案共n+m+3行,其中:第一行為整數n。
第2行到第n+1行(共n行) ,每行兩個整數x和y,描述了乙個點的座標。
第n+2行為乙個整數m,表示圖中連線的個數。
此後的m 行,每行描述一條連線,由兩個整數i和j組成,表示第i個點和第j個點之間有連線。
最後一行:兩個整數s和t,分別表示源點和目標點
【輸出描述】:
輸出檔案僅一行,乙個實數(保留5位小數),表示從s到t的最短路徑長度。
【樣例輸入】:
50 0
2 02 2
0 23 1
5 1 2
1 3
1 4
2 5
3 5
1 5【樣例輸出】:
3.41421
【時間限制、資料範圍及描述】:
n<=100
本題可以用兩點間距離公式dis=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))算出兩點間邊的路徑長,然後再跑最短路即可
code:
#include#include#include#include#include#include#include#includeusing namespace std;
const int m=1000005;
const int inf=1<<30;
int n,m,s,t;
int dist[m],cost[m],cnt;
struct nodeedge[m];
bool operator <(node p,node q)
dist[s]=0;
cost[s]=0;
q.push((node));
while (!q.empty()));}}
return;
}int main()
scanf("%d%d",&s,&t);
memset(dist,0,sizeof(dist));
memset(cost,0,sizeof(cost));
dijkstra();
printf("%d %d\n",dis[t],cost[t]);
} return 0;
}
275 最短路徑問題
275.最短路徑問題 描述 提交自定義測試 題目描述 平面上有n個點,每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點間的直線距離。現在的任務是找出從一點到另一點之間的最短路徑。輸入描述 輸入檔案共n m ...
275 最短路徑問題 Floyd
平面上有n個點,每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點間的直線距離。現在的任務是找出從一點到另一點之間的最短路徑。輸入檔案共n m 3行,其中 第一行為整數n。第2行到第n 1行 共n行 每行兩個...
275 水題 最短路徑問題
最短路徑問題 非常水的一道題啦,但是對於相隔九個月重新出山第一天的我非常不友好,各種小錯誤容易犯啊!一遍floyd加上簡單的座標求距離公式。幾乎是模板題 題目 平面上有n個點,每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路...