神奇的道路

2022-08-24 20:18:11 字數 1806 閱讀 8986

在某教練的強迫之下,我乙個蒟蒻居然又出題了!!!出題了!!!(資料太水別找我qwq)

好的,jl說好的一題100快拿來

我們有乙個有向圖,每條邊權值為1,我們要在上面找一條神奇的道路滿足:

1.神奇的道路上的所有點的出邊所指向的點都直接或間接與終點連通。

2.在滿足條件1的情況下使路徑最短。

3.該路徑是從起點到終點的路徑

垃圾出題人表示找不到這條路徑,所以希望你幫忙qwq

第一行有兩個用乙個空格隔開的整數 n 和 m,表示圖有 n個點和 m 條邊。

接下來的 m 行每行 2 個整數 x,y,之間用乙個空格隔開,表示有一條邊從點 x 指向點y。

最後一行有兩個用乙個空格隔開的整數 s, t,表示起點為 s,終點為 t。

輸出只有一行,包含乙個整數,表示滿足題目描述的最短路徑的長度。如果這樣的路徑不存在,輸出「orz」(不含雙引號)

3 2  

1 2

2 1

1 3

orz
7 8

5 23 1

5 31 6

3 66 7

2 72 4

5 7

3
對於樣例一: 起點1與終點3不連通,所以滿足題目描述的路徑不存在,故輸出orz。

30%保證是連通圖

100% 0早上毒瘤出題人告訴我跑最長路有60分。。。。。。

#include #include 

#include

using

namespace

std;

int tot,total,n,m,ss,tt,l[500050],r[500050],pre[500050],last[10050],other[500050

];int que[10050],d[10050

];bool judge[10050],vis[10050],point[10050

];inline

intread()

ch=getchar();

}while(ch>='

0'&&ch<='9'

)

return s*w;

}void add(int u,int

v) void bfs(int

x) }

}}void spfa(int

x) }}}

}int

main()

ss=read();

tt=read();

for (int i=1; i<=m; i++) add(r[i],l[i]);

bfs(tt);

if (!point[ss])

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

}memset(que,

0,sizeof

que);

memset(vis,

0,sizeof

vis);

memset(last,

0,sizeof

last);

tot=0

;

for (int i=1; i<=m; i++) add(l[i],r[i]);

spfa(ss);

printf("%d

",d[tt]);

return0;

}

尋找道路(NOIP2014)神奇之題。。

原題傳送門 這道題嘛。首先根據題目,我們要先知道哪些點能夠到達終點。反向bfs 然後我們再求最短路的途中,必須隨時判斷周圍的點是否被第一次bfs標記過。所以再來一次bfs。陣列記得清零,不然會炸。下面貼 include include include using namespace std int ...

神奇的中醫!神奇的文化!

本草備要 中載 王荊公患偏頭痛,搗萊服汁,仰臥,左痛注右鼻,右痛注左鼻,或兩鼻齊注,數十年患,二註而愈。其中所說萊菔汁就是蘿蔔汁。上邊這段話好人的部落格上都有,但是不知道有幾個人嘗試過,我因長期患偏頭疼終無良方,今天下定決心試上一試,據說中西醫對 頭疼均沒有什麼特效藥物,於是我的偏頭疼也伴隨我十幾年...

神奇的食物

跟男朋友吵架 在公司跟上司鬧矛盾 哎,煩啊 每天都要唉聲嘆氣 愁眉苦臉過日子的你,終於在有一天發現自己雪上加霜,得了慢性頭痛 消化不良 失眠症等眾多毛病。不過不用再發愁了,你馬上就可以看到能夠帶你遠離這些煩惱 幫你治好身心的保護神了!那就是平時就隱身在我們身邊的一些不起眼的食物!心生煩躁時 你說在跟...