BZOJ4316 小C的獨立集 圓方樹DP

2022-03-27 06:53:27 字數 737 閱讀 5147

題意:求仙人掌圖直徑。

演算法:建出仙人掌圓方樹,對於圓點直接做普通的樹上dp(忽略方點兒子),方點做環上dp並將值直接賦給父親。

建圖時有乙個很好的性質,就是乙個方點在鄰接表裡的點的順序正好就是從環的根開始的整個環的點的順序,所以可以直接dp。

1 #include2 #include3

#define rep(i,l,r) for (int i=l; i<=r; i++)

4using

namespace

std;56

const

int n=100010,inf=1000000000;7

intn,m,tot,tim,top,u,v;

8int dfn[n],low[n],stk[n],f[n][2],s[n][2];9

10structe13

}g,g1;

1415

void tarjan(int x,int

pre) while (t!=k);

25g1.add(x,tot); g1.add(tot,x);26}

27}28else low[x]=min(low[x],dfn[k]);29}

30}3132

void dfs(int x,int fa)

3334

void dp(int x,int

fa)42 }else60}

6162

intmain()

BZOJ 4316 小C的獨立集

4316 小c的獨立集 思路 先將樹上的轉移做好。然後環上的轉移就是強制最上面的的點選或者不選,然後在環上跑一遍轉移就可以了。pragma gcc optimize 2 pragma gcc optimize 3 pragma gcc optimize 4 includeusing namespac...

bzoj4316 小C的獨立集

圖論小王子小c經常虐菜,特別是在圖論方面,經常把小d虐得很慘很慘。這不,小c讓小d去求乙個無向圖的最大獨立集,通俗地講就是 在無向圖中選出若干個點,這些點互相沒有邊連線,並使取出的點盡量多。小d雖然圖論很弱,但是也知道無向圖最大獨立集是npc,但是小c很仁慈的給了乙個很有特點的圖 圖中任何一條邊屬於...

bzoj 4316 小C的獨立集 樹形dp

仙人掌樹形dp。令f x 0 表示以x為根的子樹中,不選x的最大值 f x 1 表示選x的最大值。注意到,同乙個環中的所有點,只有在dfs樹中最高的那個點才會對所在環之外的點的f值造成影響。因此我們在最高的那個點做乙個dp,然後就得到了最高那個點的f,而這個環中的其他點的f就不用管了。ac 如下 i...