37 最短路的變式(這裡求最長路)

2021-08-28 09:54:06 字數 1094 閱讀 4185

小w不會離散數學,所以她van的圖論遊戲是送分的

小w有一張n個點n-1條邊的無向聯通圖,每個點編號為1~n,每條邊都有乙個長度

小w現在在點x上

她想知道從點x出發經過每個點至少一次,最少需要走多少路

第一行兩個整數 n,x,代表點數,和小w所處的位置

第二到第n行,每行三個整數 u,v,w,表示u和v之間有一條長為w的道路

乙個數表示答案
示例1

複製

3 1

1 2 1

2 3 1

複製

2
1 ≤ n ≤ 50000 , 1 ≤ w ≤ 2147483647
題目的意思很簡單就是讓你一次性跑完所有的點然後求算一下,這個人要走的最短距離,講過畫幾個圖之後會發現,mindis=所有邊權和的二倍然後減掉最長的那條邊就是答案,因為你要跑完所有的邊所以就會有些邊一定要跑兩次,有一些邊不需要跑兩次,因為我們想要我們的距離跑的最短嗎,所以就是我們讓那一條最長的邊就跑一次就是我們我們要的最優解了;

#include using namespace std;

const int max = 1e6+10;

typedef long long ll;

#define rep(i,s,n) for(ll i=s;i<=n;i++)

#define per(i,n,s) for(ll i=n;i>=s;i--)

struct nodeedge[max<<1];

ll head[max],sum,max1,n,s,to,dis[max];

bool visited[max];

void add(ll u, ll v, ll w)

ll q[max];

void spfa()

if(!visited[v])}}

}}int main()

max1=0;

spfa();

printf("%lld\n",sum*2-max1);

}

最短路 求最長最短路,求最短路的路徑

hdu 1595 find the longest of the shortest include include include include include include include include include include include include include defi...

裝滿的油箱(最短路變式)

有n個城市 編號0 1 n 1 和m條道路,構成一張無向圖。在每個城市裡邊都有乙個加油站,不同的加油站的單位油價不一樣。現在你需要回答不超過100個問題,在每個問題中,請計算出一架油箱容量為c的車子,從起點城市s開到終點城市e至少要花多少油錢?輸入格式 第一行包含兩個整數n和m。第二行包含n個整數,...

最短路之 尋找每兩點之間最短路中的最長路

題目 hdu4460 題意 尋找每兩點之間最短路中的最長路。若存在某兩點不連通,就輸出 1.解答 對每個點spfa,然後找最長的邊。用鄰接鍊錶存 注意 雙向邊!include include include include include include includeusing namespace...