POJ3268(Dijkstra 鄰接矩陣)

2022-08-01 15:57:17 字數 1226 閱讀 1007

題目大意:

n個農場的n頭奶牛將前往x農場,要選擇一條來回時間最短的路徑。

(一頭牛的返回路線可能不同於她最初去派對的路線,因為道路是單向的。)

思路://有向圖的迪傑斯特拉

如果以每頭牛為起點遍歷其到x的最短路,耗時太大。

有沒有簡便的方法呢?

如果,以x為起點,找到其餘點的最短路,這求出的便是牛返回各自農場的最短路,

由於還要求牛前往x農場的最短路,

我們可以想到乙個巧妙的方法:將所有的方向反向,再求一遍以x為起點,找到其餘點的最短路。

所以就是在最短路的**上加乙個反向最短路。

1 #include2 #include3 #include4 #include

5#define maxn 1005

6#define inf 0x3f3f3f3f

7using

namespace

std;

8int

cost[maxn][maxn],n,m,x;

9int

disback[maxn],discome[maxn];

10bool

vis[maxn];

11int dij(int

x)12

19for(int i=1;i)

2029}30

//if(u=-1)return

31 vis[u]=1;32

for(int v=1;v<=n;v++)

3339}40

}41 memset(vis,0,sizeof

vis);

42for(int i=1;i)

4352

}53 vis[u]=1;54

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

5559

}60 minn=-1;61

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

62 minn=max(minn,discome[i]+disback[i]);

63return

minn;64}

65int

main()

6678

for(i=0;i)

7983 printf("

%d\n

",dij(x));84}

85return0;

86 }

poj 3268 最短路 dijkstra演算法

題目鏈結 有編號為1 n的牛,它們之間存在一些單向的路徑。給定一頭牛的編號,其他牛要去拜訪它並且拜訪完之後要返回自己原來的位置,求這些牛中所花的最長的來回時間是多少。每頭牛返回的最短時間很簡單就可以算出來,這相當於從目標牛為起點求單源最短路徑。但每頭牛出發到目標牛的最短時間無法直接算出來,稍微轉換一...

來回最短路POJ3268

這個題得主要考點在於給你的圖是去了再回來得有向圖,如何模組化解決呢就是轉變圖的方向,我們根據初始得放心求出每個點到x得最短路,然後轉變所有路得方向再求出所有點到x得最短路,最後一相加就是最後的來回了 實現得時候我用到了陣列指標,感覺非常得方便 include include include defi...

寒假 POJ 3268(最短路)

題目大意 給出n個點和m條邊,接著是m條邊,代表從牛a到牛b需要花費c時間,現在所有牛要到牛x那裡去參加聚會,並且所有牛參加聚會後還要回來,給你牛x,除了牛x之外的牛,他們都有乙個參加聚會並且回來的最短時間,從這些最短時間裡找出乙個最大值輸出 include using namespace std ...