1. 程式人生 > >【Noip模擬 20160929】花壇迷宮

【Noip模擬 20160929】花壇迷宮

一行 圖1 強連通分量 輸出數據 比較 環路 ack pre atom

題目描述

聖瑪格麗特學園的一角有一個巨大、如迷宮般的花壇。大約有一個人這麽高的大型花壇,做成迷宮的形狀,深受中世紀貴族的喜愛。維多利加的小屋就坐落在這迷宮花壇的深處。某一天早晨,久城同學要穿過這巨大的迷宮花壇,去探望感冒的維多利加。

整個迷宮可以用N個路口與M條連接兩個不同路口的無向通道來描述。路口被標號為1到N,每條通道有各自的長度。整個迷宮一定是連通的,迷宮中可能存在若幹個環路,但是,出於美觀考慮,每個路口最多只會屬於一個簡單環路。例如,圖1所示的迷宮是非常美觀的,但圖2則不符合我們的描述,因為3號路口同屬於兩個簡單環。

你需要回答多個這樣的詢問:假如久城處在路口x,維多利加的小屋處在路口y,久城最短需要走多少距離才能到達小屋?

輸入數據

第一行2個整數N,M,表示迷宮花壇的路口數和通道數;

接下來M行,每行3個整數x,y,z,描述一條連接路口x與路口y,長度為z的通道;

再接下來1行包含一個整數Q,表示詢問數量;

之後Q行,每行2個整數x,y,描述一個詢問。

輸出數據

對於每個詢問輸出一行一個整數,表示最短距離。

樣例輸入

4 4
1 2 1
2 3 2
1 3 2
3 4 1
2
2 4
1 3

樣例輸出

3
2

數據範圍

對於30%30%的數據,N100N≤100;

另有30%30%的數據,保證N=MN=M;

對於100%100%的數據,1N1000000Q2000001x,yN1z1000

1≤N≤100000,0≤Q≤200000,1≤x,y≤N,1≤z≤1000。

由於傳題人比較懶,hack數據只需滿足是一個仙人掌

題目分析

這是一道神題啊,我看得一臉懵逼。首先我們發現這是一道圖論題(廢話),我們用SPFA還是DJ隨意。題目被簡化為:給出一個有向圖,這個圖的每個點最多屬於一個正環。我們需要求的是兩個點的圖上最短距離。環裏面不可能跑兩遍的,其實這是強連通分量。

【Noip模擬 20160929】花壇迷宮