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國國王決定不新建鐵路,而是將已有的鐵路改...