poj 1419 最大獨立集

2022-05-13 20:53:51 字數 975 閱讀 5466

題目大意:

乙個無向圖中,使用黑白兩種顏色對頂點著色,要求相鄰頂點不能同時為黑色,求最大能染黑色頂點數量以及對應頂點。

解題思路:

相鄰頂點間有邊相連,模型轉換成求 無向圖 最大獨立集。因為是np問題,目前沒有有效演算法。

又 最大團頂點數量 = 補圖的最大獨立集

所以我們可以用 優化的 bron-kerbosch算求其補圖的最大團,然後得出當前圖的最大獨立集

view code

#include#include

#define n 1010

bool

flag[n], a[n][n];

intans, cnt[n], group[n], n, m, vis[n];

bool dfs( int u, int

pos )

}}

if( pos >ans )

return0;

} void

maxclique()

}int

main()

for(int i = 1; i <= n; i++)

for(int j = 1; j <= n; j++)

if( i == j ) a[i][j] = 0

;

else a[i][j] ^= 1

; maxclique();

if( ans < 0 ) ans = 0

; printf(

"%d\n

", ans );

for(int i = 0; i < ans; i++)

printf( i == 0 ? "

%d" : "%d"

, group[i] );

if( ans > 0 ) puts(""

); }

}

poj1419 染色 最大獨立集

題意 經典的圖的染色問題,求對於給定的無向圖中,給每個結點染兩種不同顏色 黑色和白色 的一種且相鄰結點的顏色不同,求染成黑色的最多結點數。分析 這個題求的圖的最大獨立集,最大獨立集即為黑色節點的個數。由於原圖的最大獨立集 補圖的最大團。而這個題是普通圖,所以用回溯法來做,時間複雜度o n 2 n v...

樹的最大獨立集

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 由於每個點只由其兒子或者孫子決定 二者的最大值 所以我們可以深搜一遍,回溯的時候用當前節點更新其父親以及父親的父親 因為此時該節點的值已經被我們計算出來了 這種由已知貢獻給未知的方法稱為刷...