codevs1961 躲避大龍 spfa

2021-07-24 04:10:52 字數 2280 閱讀 6823

題目描述 description

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

學校共有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。

本題可以bfs也可以spfa 我打了個spfa

用use[i][j] = 第i個點在秒數為j的時候能不能到達就好了

上**

#include

#include

#include

#include

#include

using

namespace

std;

const

int sz=100000+5;

struct edge

es[sz<<1];

int first[sz],nxt[sz<<1],tot;

void build(int ff,int tt,int dd)

; nxt[tot]=first[ff];

first[ff]=tot;

}struct hh

;queue

q;bool use[sz][61];

int n,m;

void spfa(int s)

); while(!q.empty())

);use[v][t]=1;}}

}}int main()

spfa(1);

for(ans=0;ans<60;ans++)

if(use[2][ans]) break;

if(ans<10) putchar('0');

printf("%d\n",ans);

return

0;}

Codevs 1961 躲避大龍

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

codevs1961 躲避大龍

時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 題解你早上起來,慢悠悠地來到學校門口,發現已經是八點整了!這句話裡有乙個比較重要的條件 學校共有n個地點,編號為1 n,其中1號為學校門口 也就是你現在所處的位置 2號為你的教室 也就是你的目的地 這些地點之間有m條雙向...

躲避大龍(codevs 1961)

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