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之間查詢哪天能賣...