codevs1961 躲避大龍

2022-03-03 08:44:51 字數 2287 閱讀 7490

時間限制: 1 s

空間限制: 128000 kb

題目等級 : 鑽石 diamond

題解你早上起來,慢悠悠地來到學校門口,發現已經是八點整了!(這句話裡有乙個比較重要的條件)

學校共有n個地點,編號為1~n,其中1號為學校門口(也就是你現在所處的位置),2號為你的教室(也就是你的目的地)。這些地點之間有m條雙向道路,對於第i條道路,為了不引起值周隊老師的懷疑,你通過它的時間須恰好為ti秒。這個數可能為負數,意義為時間倒流。

不過,即使沒有引起懷疑,值周隊也布下了最後一道防線:大龍會在教室處不定期出現。當然,你也了解大龍的習性:當前時間的秒數越小,大龍出現的概率就越低,例如:8:13:06這一時刻的秒數是06,就要比8:12:57這個時刻更加安全。

現在的問題是,在不引起懷疑的前提下,最安全的到達時刻的秒數是多少。如果學校門口到教室沒有路(-_-||),請輸出60。

注意,你可以選擇在途中的任何時候經過教室,而不結束「旅程」,具體見樣例。

輸入描述 input description

第一行為兩個整數,n和m,意義在上面已經說過了。

第2行~第m+1行,每行代表一條道路。第i+1行代表第i條道路,這一行有3個整數,ai,bi,ti,表示ai號地點與bi號地點有一條雙向道路,通過它的時間必須為ti秒。

輸出描述 output description

只有一行,為最安全的到達時刻的秒數。

樣例輸入 sample input

input1:

2 12 1 54

input2:

3 31 2 26

1 3 17

2 3 -9

input3:

3 11 3 110

input4:

2 21 2 7

2 1 9

input5:

2 21 2 3

1 1 1

input6:

2 21 2 9

1 2 11

樣例輸出 sample output

output1:

output2:

output3:

output4:

output5:

output6:

資料範圍及提示 data size & hint

樣例1的說明:一共只有兩個地點(多麼福利的資料啊),也只有一條道路,耗時為54秒。最優方案為,經過這個道路9次,耗時486秒,即8分06秒,於8:08:06到達教室。當然,最優方案不唯一。

樣例2的說明:走1->3->1->2,用時17+17+26,於8:01:00到達;或走1->2->3->1->2,用時26-9+17+26,於8:01:00到達。

對於20%的資料,n≤2;對於40%的資料,n≤100;對於70%的資料,n≤1000;

對於100%的資料,2≤n≤7000,0≤m≤9000,1≤ai,bi≤n,|ti|≤109。

分類標籤 tags 點此展開 

spfa

廣度優先搜尋

深度優先搜尋

搜尋圖論

spfa變形,用陣列vis[i][j] 表示j秒時是否可以到達i點

#include#define n 1010010

using

namespace

std;

intn,m,head[n],tot;

struct

nodee[n];

void add(int u,int v,int

w)struct

pd;int vis[n][65

];queue

q;void

spfa());

while(!q.empty()));}}

}}int

main()

spfa();

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

}printf("60

");}

dfs原理是一樣的

#include#define n 1010010

using

namespace

std;

intn,m,head[n],tot;

struct

nodee[n];

void add(int u,int v,int

w)int vis[n][62

];void dfs(int u,intw)}

intmain()

dfs(

1,0);

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

}printf("60

");}

Codevs 1961 躲避大龍

題目 題解 有一點像數字三角形的某個加強版 spfa 開乙個二維陣列dis i j 表示i號節點有無長度為j的路徑 spfa的取min改為更新dis陣列 注意 一開始沒處理負邊權,wa了兩組 處理負邊時每次 60,tle了好多組 那麼那些負邊權的點在第一次是怎麼過的呢 笑 codevs的資料真是坑的...

躲避大龍(codevs 1961)

題目描述 description 你早上起來,慢悠悠地來到學校門口,發現已經是八點整了!這句話裡有乙個比較重要的條件 學校共有n個地點,編號為1 n,其中1號為學校門口 也就是你現在所處的位置 2號為你的教室 也就是你的目的地 這些地點之間有m條雙向道路,對於第i條道路,為了不引起值周隊老師的懷疑,...

codevs1961 躲避大龍 spfa

題目描述 description 你早上起來,慢悠悠地來到學校門口,發現已經是八點整了!這句話裡有乙個比較重要的條件 學校共有n個地點,編號為1 n,其中1號為學校門口 也就是你現在所處的位置 2號為你的教室 也就是你的目的地 這些地點之間有m條雙向道路,對於第i條道路,為了不引起值周隊老師的懷疑,...