UVa208 消防車 dfs 並查集

2021-07-10 11:59:49 字數 727 閱讀 5937

uva208 firetruck

題意:乙個n(n<=20)個結點的無向圖,要求列印從結點1到結點k的所有路徑。

解法:簡單的dfs,但是會超時,因為有些結點不能到達k,所以搜尋這些結點完全是多餘的,可以用並查集將能到達k的結點放入乙個集合,搜尋這些結點就可以了。

#include

#include

#include

using

namespace

std;

int k;

int g[20+5][20+5];//鄰接矩陣

int vis[20+5];

int path[20+5];//記錄路徑,方便列印

int cnt;

int p[20+5];

int find(int x)

bool read()

return1;}

void dfs(int cur,int dep)

puts("");

return;

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

}}int main()

cnt=0;

path[1]=1;

dfs(1,1);

printf("there are %d routes from the firestation to streetcorner %d.\n",cnt,k);

}}

UVa 208 消防車(dfs 剪枝)

題意 給出乙個n個結點的無向圖以及某個結點k,按照字典序從小到大順序輸出從1到結點k的所有路徑。思路 如果直接矩陣深搜的話是會超時的,所以我們可以從終點出發,將與終點相連的連通塊儲存起來,這樣dfs深蒐時可以剪枝掉一些到達不了的點。只要解決了這個,dfs就是小問題。這道題還有點坑的就是輸出格式和它所...

紫書習題 7 1 UVa 208 (爆搜加剪枝)

題意 構造出一張圖,給出乙個點,字典序輸出所有從1到該點的路徑。解題方法 裸蒐會超時的題目,其實題目的資料特地設計得讓圖稠密但起點和終點卻不相連,所以直接搜尋過去會超時。只要判斷下起點和終點能不能相連就行了,可以用並查集也可以用floyd演算法,這樣就能過了。還有一種就是我們可以先將所有與目標點聯通...

NYOJ 208 貪心做法

題目鏈結nyoj 208 我原以為是取每個deadline的最大值。我還嘲笑為甚難度是4 結果直接wa。冷靜下來之後讀題,發現只要在deadline之前賣出去就行。所以正確的貪心策略是先從最值錢的貨物開始售賣,如果當前的貨物所在deadline已經 了東西,那就在1 deadline之間查詢哪天能賣...