zoj 1002 最大獨立集

2022-05-13 20:53:50 字數 852 閱讀 2085

題意

n*n的矩陣中,有空地和牆,放置機械人能攻擊到垂直和水平地方(有牆則被隔絕),問最多能放多少機械人,相互之間不攻擊

解題思路

最大獨立集, 對於實際頂點應該是除去牆。 然後貼模板~~

view code

#include#include

#define n 50

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()

} char

mp[n][n];

intnum[n][n];

intmain()

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

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

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 );

}

}

ZOJ1002解題報告

題目如下 zoj1002 題目大意 在乙個最大為4 4的方格內建blockhouse 碉堡 但是有條件 1.兩個及以上blockhouse不能位於同一行或者同一列 2.如果有wall,兩個blockhouse可以位於其兩側 3.blockhouse只能建在空地 注意的點 1.多次輸入 輸入0時,結束...

樹的最大獨立集

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