洛谷 P2169 正規表示式

2022-03-03 08:22:55 字數 1621 閱讀 6556

小z童鞋一日意外的看到小x寫了乙個正規表示式的高階程式,這個正規表示式程式僅僅由字元「0」,「1」,「.」和「*」構成,但是他能夠匹配出所有在oj上都ac的程式的核心**!小z大為頗感好奇,於是他決定入侵小x的電腦上去獲得這個正規表示式的高階程式。

在internet網路中的每台電腦並不是直接一對一連通的,而是某些電腦之間存在單向的網路連線,也就是說存在a到b的連線不一定存在b到a的連線,並且有些連線傳輸速度很快,有些則很慢,所以不同連線傳輸所花的時間是有大有小的。另外,如果存在a到b的連線的同時也存在b到a的連線的話,那麼a和b實際上處於同一區域網內,可以通過本地傳輸,這樣花費的傳輸時間為0。

現在小z告訴你整個網路的構成情況,他希望知道從他的電腦(編號為1),到小x的電腦(編號為n)所需要的最短傳輸時間。

輸入格式:

第一行兩個整數n, m, 表示有n臺電腦,m個連線關係。

接下來m行,每行三個整數u,v,w;表示從電腦u到電腦v傳輸資訊的時間為w。

輸出格式:

輸出檔案僅一行為最短傳輸時間。

輸入樣例#1: 複製

3 2

1 2 1

2 3 1

輸出樣例#1: 複製

2

輸入樣例#2: 複製

5 5

1 2 1

2 3 6

3 4 1

4 2 1

3 5 2

輸出樣例#2: 複製

3

對於40%的資料,1<=n<=1000, 1<=m<=10000

對於70%的資料,1<=n<=5000, 1<=m<=100000

對於100%的資料,1<=n<=200000, 1<=m<=1000000

#include#include

#include

#include

#include

#define n 101010

using

namespace

std;

inttot,n,m,tpt,head[n],phead[n];

struct

nodee[n],p[n];

void add(int u,int v,int

w)void add(int u,int v,int

w)int

dfn[n],low[n],item,cnt,belong[n];

bool

vis[n];

stack

s;void tarjan(int

u)else

if(vis[v]) low[u]=min(low[u],dfn[v]);

}if(dfn[u]==low[u])

while(v!=u);

}}queue

q;intd[n];

void

spfa()}}

}}int

main()

for(int i=1;i<=n;i++) if(!dfn[i]) tarjan(i);

for(int i=1;i<=n;i++)}}

spfa();

printf("%d

",d[belong[n]]);

return0;

}

洛谷 P2169 正規表示式

題目背景 小z童鞋一日意外的看到小x寫了乙個正規表示式的高階程式,這個正規表示式程式僅僅由字元 0 1 和 構成,但是他能夠匹配出所有在oj上都ac的程式的核心 小z大為頗感好奇,於是他決定入侵小x的電腦上去獲得這個正規表示式的高階程式。題目描述 在internet網路中的每台電腦並不是直接一對一連...

P2169 正規表示式

在internet網路中的每台電腦並不是直接一對一連通的,而是某些電腦之間存在單向的網路連線,也就是說存在a到b的連線不一定存在b到a的連線,並且有些連線傳輸速度很快,有些則很慢,所以不同連線傳輸所花的時間是有大有小的。另外,如果存在a到b的連線的同時也存在b到a的連線的話,那麼a和b實際上處於同一...

Luogu 2169 正規表示式

題目鏈結 感謝 0xis 推題。記憶中很久沒有過一遍寫過一題了 別被題目名稱矇騙!這不是正規表示式題目!和字元 串 處理一點關係都沒有!這是個圖論題啊喂!題都沒急,capella 你急啥?由題意得,能夠本地傳輸的機子們處於同一強連通分量,於是 tarjan 一遍,縮點。縮的過程中,對於兩個 scc ...