uva1220 樹的最大獨立集 判重

2022-05-13 16:31:34 字數 1026 閱讀 6625

題意是挑選盡量多的人,並且每個人都不和他的父節點同時出現,很明顯的最大獨立集問題,難點在於如何判斷方案是否唯一。

詳情請見劉汝佳《演算法競賽入門經典--第二版》p282

#include#include

#include

#include

#include

#include

#include

#define inf 1e6

using

namespace

std;

const

int maxn = 205

;char ch[105],fa[105

];char trie[maxn][105

];int

k;int d[maxn][2],f[maxn][2

];vector

g[maxn];

int id(char *s)//給每個字串分配id;

}if(i ==k) strcpy(trie[k],s);

k++;

return k-1;}

int dp(int u,int

x) }

return d[u][1] =sum;

}else

else

if(p >q)

else

if(p }

return d[u][0] =sum;

}}int

main()

//printf("%d\n",g[0].size());

memset(d,-1,sizeof

(d));

dp(0,0);

dp(0,1);

if(d[0][0] > d[0][1

])

else

if(d[0][0] < d[0][1

])

else

for(int i = 0; i < n; ++i) g[i].clear();

}}

uva1220樹的最大獨立集

題意 公司裡除了老闆,每個人都有乙個直屬上司,要求選盡量多的人,但不能同時選乙個人和他的直屬上司,問最多能選多少個人,以及在人數最多的情況下方案是否唯一。思路 d u 0 表示不選u點能得到的最大人數d u 0 sum d u 1 表示選u點能得到的最大人數d u 1 sum f u 0 表示不選u...

樹的最大獨立集

include include includeusing namespace std ifstream fin c data19.in struct node int data int c int gc struct node parent struct node left struct node ...

樹的最大獨立集

題意 對於一棵有n個結點的無根樹,選出盡量多的結點,使得任何兩個結點均不相鄰 稱為最大獨立集 sol 樹形dp 由於每個點只由其兒子或者孫子決定 二者的最大值 所以我們可以深搜一遍,回溯的時候用當前節點更新其父親以及父親的父親 因為此時該節點的值已經被我們計算出來了 這種由已知貢獻給未知的方法稱為刷...