DTOJ 5207 蕪湖機場,請求起飛

2021-10-11 03:13:41 字數 3359 閱讀 4842

傳送門

有 n

nn 個節點,標號為 1…n

1\dots n

1…n,m

mm 條雙向公路連線著這些節點,其中第 i

ii 條公路連線著 u

iu_i

ui​ 和 v

iv_i

vi​,從一端走到另一端需要 w

iw_i

wi​ 秒。現在,馬老師打算從家到蕪湖機場。

家是節點 1

11,機場是節點 n

nn,保證存在至少一條從節點 1

11 到節點 n

nn 的路徑。

在第 0

00 秒,馬老師身處節點 1

11,他的目標是盡早到達節點 n

nn。根據天氣預報,接下來會有 k

kk 次暴雨,第 i

ii 次暴雨的時間為 l

il_i

li​ 秒至第 r

ir_i

ri​ 秒,保證每次暴雨的時間段互不重疊(包括起止時間)。由於馬老師忘了帶傘,因此在下雨期間,他只能躲在某個節點裡面避雨。如果某乙個時刻在下暴雨,而馬老師還在某條公路上,那麼他會被淋慘。

為了幫助馬老師盡快回家,上帝決定實現馬老師乙個願望。馬老師可以指定某一條道路,然後這條道路兩端的節點將合併成乙個節點(合併出的節點擁有原來兩個節點的所有出邊)。

請你幫馬老師計算,在不被淋慘的前提下最早第多少秒他能回到自己家中?

注:對於一場第 l…r

l\dots r

l…r 秒的暴雨,若馬老師第 r

rr 秒從節點出發,或第 l

ll 到達某個節點,那麼他是不會淋到雨的。

第一行三個數 n,m

,k

n,m,k

n,m,k。

接下來 m

mm 行,第 i

ii 行三個整數表示 ui,

vi,w

iu_i,v_i,w_i

ui​,vi

​,wi

​。接下來 k

kk 行,第 i

ii 行兩個整數表示 li,

ri

l_i,r_i

li​,ri

​。第一行乙個整數,表示馬老師最早第多少秒能回到家中。

樣例輸入

4 4 3

1 3 5

2 1 4

2 3 4

3 4 1000

4 59 10

11 10000

樣例輸出
9
對於 30

%30\%

30% 的資料:k=0

k=0k=

0。對於 60

%60\%

60% 的資料:n,m

,k≤1

03

n,m,k\le 10^3

n,m,k≤

103。

對於 100

%100\%

100%

的資料:

2 ≤n

≤1

52\le n\le 1^5

2≤n≤15

,1 ≤m

≤2×1

05

1\le m\le 2\times 10^5

1≤m≤2×

105,0≤k

≤105

0\le k\le 10^5

0≤k≤10

5,1≤wi

≤104

1\le w_i\le 10^4

1≤wi​≤

104。

0 ≤l

i

≤109

0\le l_i < r_i\le 10^9

0≤li

​​≤10

9,且保證輸入的暴雨時間段互不相交,l

il_i

li​ 嚴格遞增。

直接跑最短路,但是要記錄是否使用過願望,且每次的邊權都要二分+st表。

#include

#define n 200005

using

namespace std;

const

int inf=

1e9;

intread()

while

(ch>=

'0'&&ch<=

'9') sum=

(sum<<3)

+(sum<<1)

+ch-

'0',ch=

getchar()

;return op*sum;

}int n,m,k;

int tot,head[n]

,ver[n<<1]

,nex[n<<1]

,edge[n<<1]

;inline

void

add(

int x,

int y,

int z)

int l[n]

,r[n]

,len[n]

;int d[n][2

],v[n][2

],st[n][21

],t=

20,e[21]

;inline

intget

(int x,

int y)

priority_queueint,

int>

> q;

void

spfa()

to=l[l]

+w;}

if(d[y]

[s]>to)if(

!s)}}}

}int

main()

int las=0;

for(

int i=

1;i<=k;

++i)

l[++k]

=las,r[k]

=inf;len[k]

=r[k]

-l[k]+1

;for

(int i=

1;i<=k;

++i)st[i][0

]=len[i]

; e[0]

=1;for

(int i=

1;i<=20;

++i)e[i]

=e[i-1]

<<1;

for(

int i=

1;i<=t;

++i)

}// sort(qu+1,qu+1+k);

spfa()

;printf

("%d\n"

,min

(d[n][0

],d[n][1

]));

return0;

}

惠普520hp520xp驅動大全

惠普520hp520xp驅動大全 2008 03 12 11 25 惠普 520 hp520 驅動大全,晶元組驅動,顯示卡驅動,音效卡驅動,網絡卡驅動,無線網絡卡驅動,modem驅動,觸控板驅動 晶元組顯示卡 安裝modem 安裝音效卡 網絡卡驅動 無線網絡卡 無線網絡卡 如果您安裝上面的無線網絡卡...

5 20 乾掉班長

include include using namespace std class stu 宣告基類 string getname protected 訪問許可權為保護型的資料成員 int num 學生學號 string name 學生姓名 stu stu int n,string nam num ...

工作記錄520

給list打個斷點確認傳過來的引數 然後以userphoto id為主鍵id刪掉photo0和photo1 增加乙個隱藏字段獲取需要傳過去的id 刪除對應頭像的關聯表即可 建立一條語句測試一下,原因貌似是因為delete寫法有問題,多撈啊。需要改成update語句 仔細看原始碼發現是這個地方重複了的...