題意:乙個無向連通圖刪除某點後分成的連通塊個數成為該點的鴿子值。求鴿子值最大的m個點的鴿子值
思路:1.鴿子值》1 <=> 該點是割點。2統計割點所連線的點雙連通分量。tarjan演算法求割點過程中,改標記割點為統計該點所連線的點雙連通分量個數即可。
#include#include#include#include#include#include#define maxn 10010
#define inf 1<<28
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
vectorg[maxn];
int n,m,low[maxn],pre[maxn],dfs_clock;
struct cutcut[maxn];
bool cmp(cut a,cut b)
void dfs(int u,int fa)
else if(pre[g[u][i]]
Uva 810 DFS 骰子模擬
原題 很有意思的一道題,因為是根據骰子的點數走迷宮,自然就只能一步步模擬了.最大的難題在於怎樣確定骰子旋轉後的情況.由於骰子旋轉之後每個面點數的變化規律比較難找,但由於骰子有六個面,而且每個面的對立面都是固定的,因此只要知道其中兩個位置的點數就可以推斷出整個骰子的點數了。因此可以採用列舉法,也就是可...
uva10160 dfs 狀態壓縮
題意 給出n個點,以及m條邊,這些邊代表著這些點相連,修乙個電力站,若在某一點修乙個站,那麼與這個點相連的點都可以通電,問所有的點都通電的話至少要修多少個電力站.思路 最多給出的是35個點,那麼若是搜尋的話,就是2 35.考慮狀態壓縮剪枝,若某個點修電力站,那麼周圍的所有點都有電了.include ...
UVA 679車的擺放 DFS
這是一道簡單的深度優先搜尋問題 附上題目鏈結 這道題跟八皇后問題類似,思路大致為 把棋盤的每一格視作乙個狀態,符合要求就擺放,不符合就進入下一狀態,到達最後一格就開始回溯,直至走完每乙個狀態,由於是每一次都走到最後一格,符合深度優先搜尋的思路。附上ac include include include...