floyd演算法 乙個人的旅行

2021-07-30 23:18:00 字數 2080 閱讀 5756

博主是acm剛入門的人,如果有錯誤希望能有人指出,不喜勿噴~~
input

輸入資料有多組,每組的第一行是三個整數t,s和d,表示有t條路,和草兒家相鄰的城市的有s個,草兒想去的地方有d個;

接著有t行,每行有三個整數a,b,time,表示a,b城市之間的車程是time小時;(1=<(a,b)<=1000;a,b 之間可能有多條路)

接著的第t+1行有s個數,表示和草兒家相連的城市;

接著的第t+2行有d個數,表示草兒想去地方。

output

輸出草兒能去某個喜歡的城市的最短時間。

sample input

6 2 3

1 3 5

1 4 7

2 8 12

3 8 4

4 9 12

9 10 2

1 2

8 9 10

sample output

9分析:可以用floyd演算法解決,博主寫這個**也花了好長時間,測試正確,但是提交上出現wrong answer;

先擺上正確的:

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 999999;

const

int n = 1010;

intmap[n][n],s[n],e[n],maxx;

int t,s,d;

void floyd(void)

}int main()

for(int i = 1; i <=s ; i++)

cin >> s[i];

for(int j = 1 ; j<=d ; j++)

cin >>e[j];

floyd();

int ans = maxn;

for(int i = 1; i <=s ; i++)

for(int j = 1; j <= d ; j++)

if(map[s[i]][e[j]] < ans)

ans = map[s[i]][e[j]] ;

cout

<< ans << endl;

}return

0;}

思路基本上不是很難,只要理解floyd就可以做出來,其中要注意一下map的初始化問題,需要一層一層進行初始化,不能採取別的方式;

現在說一下我犯錯的地方:

以下是錯誤的**:

#include

#include

#include

#include

#define maxn 1000000

#define n 1010

using

namespace

std;

intmap[n][n],s[n],e[n],maxx;

int t,s,d;

void floyd(void)

}int main()

for(int i=1; i<=s; i++) //標記需要查詢的城市

for(int i=1; i<=d; i++) // 記錄下來想去的地方的標記

floyd();

int res = maxn;

for(int i = 1 ; i <= maxx ; i++)

for(int j = 1 ; j <= maxx ; j++)

res = min(res,map[i][j]);

cout

<< res << endl;

}return

0;}

for(int i = 1 ; i <= maxx ; i++)

for(int j = 1 ; j <= maxx ; j++)

res = min(res,map[i][j]);

cout << res << endl;

這段出錯了,這樣不和題意;

乙個人的旅行(Floyd)

原題 hdu2066 一開始以為是一道簡單的多源最短路徑問題,就用floyd演算法來解,後來發現時間複雜度太高了,看過別人的題解,學到了floyd演算法 剪枝,就是 for int i 1 i 1000 i 這行 後加乙個 if mp i k include using namespace std ...

HDU 2066 乙個人的旅行 (floyd演算法)

思路 求有多個起點和多個終點,找出從其中任意乙個起點到任意乙個終點的距離最短,用floyd演算法,但是要注意很多細節的優化,要不會超時 1 include2 include3 include4 define inf 0x3fffffff 5int map 1001 1001 max 6bool st...

乙個人旅行

乙個人旅行計畫正式啟動啦 一直想乙個人好好的出去走走轉轉.然後把遇到的看到的記錄下來,成為回憶.但是一直沒有鼓起勇氣或者說沒有找到好的藉口.經過長達四年的準備 嘿嘿,有點誇張 目前各方面已經就緒 2008年12月份 公園瀏覽年票 到位 2009年5月份 確實地說是上周五 2009.05.08 富士相...