由於如果要經過一條道路就肯定會經過兩次,所以我們直接將所有邊的邊權乘2即可。
然後我們把每乙個點的dis
disdi
s設為在該地看比賽的**。然後將每乙個點扔進優先佇列內跑最短路即可。如果乙個地點經過某一條道路到另外的地點**比賽會更優,那麼最短路就可以跑出來。
最終答案就是dis
disdi
s
#include
#include
#include
#include
#define mp make_pair
using
namespace std;
typedef
long
long ll;
const
int n=
200010
;int n,m,tot,head[n]
;ll dis[n]
;bool vis[n]
;struct edge
e[n*2]
;void
add(
int from,
int to,ll dis)
void
dij(
)while
(q.size()
)}}}
intmain()
dij();
for(
int i=
1;i<=n;i++
)printf
("%lld "
,dis[i]);
return0;
}
賽艇表演 最短路
由於如果要經過一條道路就肯定會經過兩次,所以我們直接將所有邊的邊權乘2即可。然後我們把每乙個點的dis dis設為在該地看比賽的 然後將每乙個點扔進優先佇列內跑最短路即可。如果乙個地點經過某一條道路到另外的地點 比賽會更優,那麼最短路就可以跑出來。最終答案就是disdis include inclu...
nssl1436 賽艇表演 最短路
n nn個點m mm條邊的無向圖,每個點有門票費,對於每個點求乙個點使得去那裡看完賽艇並回來消耗的時間最小。因為是無向圖,所以去和回是同一條路,把每個點作為起點將門票費壓入然後跑最短路。include include include include define ll long long using...
賽艇表演 51nod提高組模擬試題
ac通道 題目描述 小明去某個地區 賽艇比賽,這個地區共有n個城市和m條道路,每個城市都有賽艇比賽,在第i個 城市 賽艇表演的價錢為ai,去其他城市 也需要支付賽艇表演的 任意兩個城市之間通過 一條公路連線,並且道路是雙向通行的,賽艇比賽時經過的每一條道路都要支付一定的過路費,完比賽返回家時經過的每...