CCF201609 4 交通規劃 最短路

2021-08-27 14:01:29 字數 988 閱讀 5997

傳送門:ccf201609-4 交通規劃

1為首都,要求改造的鐵路到首都的最短路不變,且其他城市兩兩高鐵互通,故直接對1用dijkstra,算出其他點到1的最短路,此時即滿足了以上兩個條件。

由於要計算需要改造的長度,如果直接將其他點到1的最短路累加,會出現重複計算的現象,所以需要增加乙個c陣列,c[i]用來記錄點i的前驅到i點的長度,在dijkstra更新時一起更新,最後將c[i]累加即可。但要注意的一點是,dijkstra更新dis陣列時,判斷的條件是dis[v]>dis[u]+w[u][v],如果存在另一條點p,存在dis[v]==dis[p]+w[p][v],此時我們需要取min(w[u][v], w[p][v]),以達到所需改造的長度最小的目的。

下面上**:

#include #define ll long long

#define inf 0x3f3f3f3f

using namespace std;

const int maxn = 1e4+10;

struct node

node(int x, int d): x(x), d(d) {}

bool operator < (const node& a) const

};int n, m;

int dis[maxn], c[maxn];

vectorr[maxn];

void read()

}void dijkstra(int s)

; priority_queueq;

q.push(node(s, dis[s]));

while(!q.empty())

if(dis[next.x] == dis[cur.x]+next.d)

c[next.x] = min(next.d, c[next.x]);

}vis[cur.x] = 1;

}}void solve()

int main()

CCF 201609 4 交通規劃

問題描述 g國國王來中國參觀後,被中國的高速鐵路深深的震撼,決定為自己的國家也建設乙個高速鐵路系統。建設高速鐵路投入非常大,為了節約建設成本,g國國王決定不新建鐵路,而是將已有的鐵路改造成高速鐵路。現在,請你為g國國王提供乙個方案,將現有的一部分鐵路改造成高速鐵路,使得任何兩個城市間都可以通過高速鐵...

ccf201609 4交通規劃

試題編號 201609 4 試題名稱 交通規劃 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 g國國王來中國參觀後,被中國的高速鐵路深深的震撼,決定為自己的國家也建設乙個高速鐵路系統。建設高速鐵路投入非常大,為了節約建設成本,g國國王決定不新建鐵路,而是將已有的鐵路改造成高速鐵...

CCF 201609 4 交通規劃

時間限制 1.0s 記憶體限制 256.0mb g國國王來中國參觀後,被中國的高速鐵路深深的震撼,決定為自己的國家也建設乙個高速鐵路系統。建設高速鐵路投入非常大,為了節約建設成本,g國國王決定不新建鐵路,而是將已有的鐵路改造成高速鐵路。現在,請你為g國國王提供乙個方案,將現有的一部分鐵路改造成高速鐵...