Code 4 最短路 (最短路)

2022-04-29 22:12:17 字數 2196 閱讀 7337

在北緯 91° ,有乙個神奇的國度,叫做企鵝國。這裡的企鵝也有自己發達的文明,稱為企鵝文明。因為企鵝只有黑白兩種顏色,所以他們的數學也是以二進位制為基礎發展的。

比如早在 1110100111101001 年前,他們就有了異或這樣乙個數學概念。如果你不知道異或是什麼,請出門過牆左轉到這裡。

再比如早在 10000101000010 年前,他們的大科學家 penguin. tu 就提出了圖和最短路徑這樣一些概念。

企鵝國中有 n 座城市,編號從 1 到 n 。

對於任意的兩座城市 i 和 j ,企鵝們可以花費 \((i~\mathrm~j) \times c\) 的時間從城市 i 走到城市 j ,這裡 c 為乙個給定的常數。

當然除此之外還有 \(m\) 條單向的快捷通道,第 \(i\) 條快捷通道從第 \(f_i\) 個城市通向第 \(t_i\)​​​ 個城市,走這條通道需要消耗 \(v_i\)​​​ 的時間。

現在來自penguinkingdomuniversity 的企鵝豆豆正在考慮從城市 a 前往城市 b 最少需要多少時間?

輸入格式:

從標準輸入讀入資料。

輸入第一行包含三個整數 \(n,m,c\) ,表示企鵝國城市的個數、快捷通道的個數以及題面中提到的給定的常數cc。

接下來的 m 行,每行三個正整數 \(f_i,t_i,v_i (1≤fi​≤n,1 \leq t_i \leq n ,1\leq v_i \leq 100)\),分別表示對應通道的起點城市標號、終點城市標號和通過這條通道需要消耗的時間。

最後一行兩個正整數 a,b \((1 \leq c \leq 100)\),表示企鵝豆豆選擇的起點城市標號和終點城市標號。

輸出格式:

輸出到標準輸出。

輸出一行乙個整數,表示從城市 a 前往城市 b 需要的最少時間。

輸入樣例#1:複製

4 2 1

1 3 1

2 4 4

1 4輸出樣例#1:複製

輸入樣例#2:複製

7 2 10

1 3 1

2 4 4

3 6輸出樣例#2:複製

樣例1解釋

直接從 1 走到 4 就好了。

樣例2解釋

先從 3 走到 2 ,再從 2 通過通道到達 4 ,再從 4 走到 6。

一道思路非常巧妙的題目。

在這裡我們要充分利用到異或的性質。

我們知道如果 a^ b ^ c ^ d =a^e時。

就直接建邊a->e了。

也就是說,有些邊是多餘的。

那麼我們怎麼確保必要的邊呢?

乙個點到只需要連線n的每乙個二進位制的1就可以了。

因為所有的異或情況都可以由二進位制組合出來。

那麼邊就是\(m+log(n)\)的。

#include#include#include#include#include#includeusing namespace std;

const int n=4000001;

struct nodee[n];

int num,head[n];

int n,m,c,s,t,dis[n],vis[n];

int read()

while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();

return x*w;

}void add(int from,int to,int v)

void dijkstra()}}

}int main()

for(int i=0;i<=n;i++)

}s=read();t=read();

dijkstra();

printf("%d\n",dis[t]);

return 0;

}

最短路 最短路徑問題

題目描述 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點直線的距離。現在的任務是找出從一點到另一點之間的最短路徑。input 共有n m 3行,其中 第一行為乙個整數n。第2行...

最短路徑演算法 最短路

在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n...

最短路(最短路之積)

首先考慮暴力維護,顯然極端資料就會炸裂,那麼用什麼來維護呢?考慮乙個很 nb的公式log n m log n log m ok,這道題到此結束 我們只要把乘積轉化為對數,最後再還原就可以了,也不用考慮精度問題,本蒟蒻試著用pow,然後它死了。includeusing namespace std co...