物語 解題報告

2021-07-17 04:28:49 字數 3233 閱讀 7852

【問題描述】

某一天,少年邂逅了同病相連的ia。見面後,ia一把牽起少年的手,決定和他一起逃離部落,離開這個無法容身的是非之地。

要逃離部落,少年和ia就需要先選擇一條耗時最少的路線,從而避免被部落的大人們抓到。部落可以大致分為n個區域,少年和ia在區域1,部落的出口設在區域n。此外部落還有m條連線兩個區域道路。道路是無向的,沒有一條道路的兩端連線相同的區域,也沒有兩條道路所連線的兩個區域完全相同。對於其中前(m-1)條道路,其通過時間是確定的,但最後一條道路,由於地理因素,通過其的時間會不斷變化。

現在,少年和ia得知了在k個不同的時段裡,通過第m條道路的時間,請您分別計算出在這k個時段中逃離部落的最少時間,以幫助他們確定行動的時刻。

【輸入格式】

第一行三個整數n,m,k,分別表示區域數,道路數,詢問數。

接下來m-1行每行三個整數ui,vi,wi(ui≠vi,1≤ui,vi≤n,0緊接著是兩個整數ui,vi(ui≠vi,1≤ui,vi≤n),表示第m條道路連線的區域。

最後k行,每行乙個正整數xi(0【輸出格式】

輸出共計k行,每行乙個整數,表示對應時段逃離部落的最短時間。如果在該時段內無法逃離,輸出「+inf」。

【樣例輸入1】

4 5 4

1 2 7

1 3 4

2 4 3

3 4 6

2 3【樣例輸出1】

【樣例說明1】

如圖1,紅色的圓圈表示少年和ia的出發地,綠色的圓圈表示目的地,連線表示道路,旁邊的數字表示通過該道路的時間。最後一條道路時間未知用x表示。圖中不重複經過同一區域的路徑有4條,分別為1→2→4,1→3→4,1→2→3→4,1→3→2→4,其所需時間隨x的關係如下表所示:

可以證明,不存在

更優的解,故將上表最後一列輸出。

【樣例輸入2】

4 3 1

1 2 7

1 3 4

2 3【樣例輸出2】

+inf

【樣例說明2】

如圖2,起點和終點不連通,故少年和ia無法逃離部落。

【資料範圍】

測試點編號nm

k其他1n = 2

m = 1

k = 1

隨機生成

2n = 5

m = 4

k = 1

隨機生成

3n = 5

m = 10

k = 5

隨機生成

4n = 50

m = 100

k = 10

隨機生成

5n = 75

m = 200

k = 10

隨機生成

6n = 100

m = 1000

k = 10

隨機生成

7n = 200

m = 2000

k = 10

隨機生成

8n = 300

m = 3000

k = 10

隨機生成

9n = 1000

m = 30 000

k = 10

隨機生成

10n = 2000

m = 50 000

k = 10

隨機生成

11n = 10 000

m = 200 000

k = 10

隨機生成

12n = 30 000

m = 300 000

k = 10

隨機生成

13n = 50 000

m = 300 000

k = 30 000

隨機生成

14n = 100 000

m = 500 000

k = 30 000

隨機生成

15n = 100 000

m = 500 000

k = 30 000

隨機生成

16n = 120 000

m = 179 998

k = 10

n/a17

n = 180 000

m = 299 997

k = 10

n/a18

n = 180 000

m = 269 998

k = 10

n/a19

n = 180 000

m = 419 991

k = 30 000

n/a20

n = 200 000

m = 399 996

k = 30 000

n/a【題解】

首先把第m個邊去掉求最短路,分別求出1到任何乙個點的最短路,以及任何乙個點到n的最短路(反向spfa)。

然後當第m個邊(s,t)的長度變化的時候,只需要比較dis[1][s]+bian[s][t]+dis[t][n],dis[1][n]即可。

**附上

#include#include#include#include#include#include#define maxn 200005

#define maxm 500005

#define inf 4611686010000000000ll

#define pr pair#define mp make_pair

#define x first

#define y second

using namespace std ;

typedef long long ll ;

struct road

r[maxm*2] ;

int n,m,k;

int st,ed;

ll s[maxn],t[maxn];

int st[maxn],w,vis[maxn] ;

priority_queueq;

void add(int x,int y,ll dis)

void spfa(int x) }

}int main()

{ int fr,to;

ll dt,tmp;

scanf("%d%d%d",&n,&m,&k) ;

for(int i=1,tmp=0;i

Block Voting 解題報告

這道題做的有點狼狽,效率不高,差一點就tle的ac了。看status裡的,ac的時間大多數都是0ms的。肯定有乙個更有效率的演算法的。下面說下我的狼狽演算法。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1223 問題描述 求每個party的權值。第i...

Safebreaker 解題報告

又是吉林大學一道acm題目,題目很簡單,直接暴力解決。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1718 問題描述 對乙個給定數0000 9999 根據一系列猜測,判斷這個數是否存在,存在的話,是否唯一 例如 3321,給定數 作出猜測,1223 ...

路由 解題報告

路由 問題描述 有乙個tcp ip網路 每台計算機都有乙個或多個網路介面。每個介面根據它的ip位址和子網掩碼來識別 即兩個4位元組的數,兩個字 節之間有乙個 號.子網掩碼有乙個二進位制表示法 有k個 1 然 後是 m 個 0 k m 8 4 32 如 212.220.35.77 是乙個 ip 地 址...