ccf交通規劃巨簡單 c 100

2021-08-26 20:45:52 字數 2237 閱讀 6070

g國國王來中國參觀後,被中國的高速鐵路深深的震撼,決定為自己的國家也建設乙個高速鐵路系統。

建設高速鐵路投入非常大,為了節約建設成本,g國國王決定不新建鐵路,而是將已有的鐵路改造成高速鐵路。現在,請你為g國國王提供乙個方案,將現有的一部分鐵路改造成高速鐵路,使得任何兩個城市間都可以通過高速鐵路到達,而且從所有城市乘坐高速鐵路到首都的最短路程和原來一樣長。請你告訴g國國王在這些條件下最少要改造多長的鐵路。

輸入格式

輸入的第一行包含兩個整數n, m,分別表示g國城市的數量和城市間鐵路的數量。所有的城市由1到n編號,首都為1號。

接下來m行,每行三個整數a, b, c,表示城市a和城市b之間有一條長度為c的雙向鐵路。這條鐵路不會經過a和b以外的城市。

輸出格式

輸出一行,表示在滿足條件的情況下最少要改造的鐵路長度。

樣例輸入

4 51 2 4

1 3 5

2 3 2

2 4 3

3 4 2

樣例輸出

評測用例規模與約定

對於20%的評測用例,1 ≤ n ≤ 10,1 ≤ m ≤ 50;

對於50%的評測用例,1 ≤ n ≤ 100,1 ≤ m ≤ 5000;

對於80%的評測用例,1 ≤ n ≤ 1000,1 ≤ m ≤ 50000;

對於100%的評測用例,1 ≤ n ≤ 10000,1 ≤ m ≤ 100000,1 ≤ a, b ≤ n,1 ≤ c ≤ 1000。輸入保證每個城市都可以通過鐵路達到首都。

天殺的...樓主要瘋啦!!!!

之前用dijsktral演算法妄想解決這個問題,思路也是對的,因為有4->3->1和4->2->1兩條路可以走,兩條路的長度都一樣,但是導致了整個布局的總長度不一樣.(⊙o⊙)…為什麼呢?樓主想到了其實4點也是建立在其他點的最短路徑上的,所以當有路的總長度相同時,我肯定是在(3,4)和(2,4)之間選最短的,既然其他的路是已經確定好了的.

然而!!

我的老天鵝!!案例也太簡單了,雖然執行成功,但是卻得了0

悲劇,我以為是我思路不對.但是在網上看到有很多大神用優先佇列也是這個思路.

嗯!我想的沒錯!

於是樓主用spfa寫了一遍,一遍搞定.上**,真的巨簡單!

#include #include #include #include #include #define maxn 10001

#define inf 0x3f3f3f3f

using namespace std;

int n;

struct node

};vectorsubway[maxn];

int visited[maxn];

int dis[maxn];//距離

int pre[maxn];//記錄每個點的最短前驅路徑長度

void spfa(int v)

if(dis[w]== dis[u]+subway[u][i].far)//w = 4,u = 3

if(flag)}}

}}int main()

memset(visited,0,sizeof(visited));

memset(dis,inf,sizeof(dis));

memset(pre,inf,sizeof(pre));

//cout<<"visited"《裡面的很傻的注釋可以不用理啦,思路其實很清晰,還有這裡有個坑是你如何記錄路的長度?

樓主傻的時候,想著每個節點設乙個flag,然後遍歷看看誰是最短路徑的....傻到爆....,但是其實每個點的前驅只有乙個.

為什麼只有乙個?首先它會保證a的前驅到a的距離是所有可選的前驅中最短的,比如(3,4)就是最短的,其次,樓主想過假設有兩條路都到4,而且最短路徑長一樣,甚至連前驅到它的距離都一樣.

但是!!

1.第二條路徑的發出點是1,既然是1->4,不就是這條嘛,其他路根本不用考慮

2.第二條路徑的發出點是5(假設),1->3->4    1->5->4,而且路的長度都一樣.但注意!,這裡形成了乙個迴路,迴路是不必要的,因為題目要求是任意兩個城市都相連,其實就是樹,而且總的長度越小越好,既然樹滿足要求,咱們再破乙個圈總長度還更小呢...所以沒有第二條路,保證了只有乙個前驅

看完了樓主破洞百出的證明,來看看樓主的笑話

樓主一眼掃到只有乙個前驅後,用乙個陣列來記錄每個點的前驅長度,順利一百~

然後愚蠢的樓主用dijsktral來重寫,額滴神呀!!一晚上了都!執行11,你為啥給我零分!!!

雖然有大神用優先佇列寫出來了,但是私以為不用也能寫出來,因為思想都是一樣的,誰來告訴樓主怎麼回事~

CCF 交通規劃

題意大致如下 給你一張無向帶權圖,有標號為1到n的節點,現在要你選擇一些邊留下來,使得在留下來的邊構成的新的圖里,每個節點到節點1的最小距離不變 即和初始圖一樣 在滿足上述要求的前提下,要使留下來的邊的權重和最小,並求出這個最小權重和。題解 只要我們用dijsktra演算法加以改造遍歷一遍原圖,就能...

ccf 交通規劃

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

CCF之交通規劃

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