捉迷藏 最小重複點覆蓋

2021-10-03 03:55:46 字數 1207 閱讀 1229

vani和cl2在一片樹林裡捉迷藏。

這片樹林裡有n座房子,m條有向道路,組成了一張有向無環圖。

樹林裡的樹非常茂密,足以遮擋視線,但是沿著道路望去,卻是視野開闊。

如果從房子a沿著路走下去能夠到達b,那麼在a和b裡的人是能夠相互望見的。

現在cl2要在這n座房子裡選擇k座作為藏身點,同時vani也專挑cl2作為藏身點的房子進去尋找,為了避免被vani看見,cl2要求這k個藏身點的任意兩個之間都沒有路徑相連。

為了讓vani更難找到自己,cl2想知道最多能選出多少個藏身點。

輸入格式

輸入資料的第一行是兩個整數n和m。

接下來m行,每行兩個整數 x,y,表示一條從 x 到 y 的有向道路。

輸出格式

輸出乙個整數,表示最多能選取的藏身點個數。
資料範圍

n≤200,m≤30000
輸入樣例:

7 5

1 23 2

2 44 5

4 6

輸出樣例:

3
#include

#include

using

namespace std;

const

int n =

205;

int n, m, u, v, g[n]

[n], mat[n]

;bool vis[n]

;bool

dfs(

int u)

}return

false;}

intmain()

//求傳遞閉包

for(

int k =

1; k <= n; k++)}

int ans = n;

//求出最大匹配

for(

int i =

1; i <= n; i++

)printf

("%d\n"

, ans)

;return0;

}

點分樹 ZJOI2007 捉迷藏

門 點分樹不卡常就別想過了。問樹中最遠黑點對距離 帶修改點分樹入門作 原圖先亂跑一次點分治,儲存點分治的每個root之間的父子關係,得到一顆點分樹。然後我們的原圖除了求dis就可以不管了 學習題解中不認識的大佬所說的套路 點分治得到點分樹 每個點用s1,s2 s 1,s 2 s1 s2 兩個資料結構...

BZOJ 1095 捉迷藏 動態點分治 點分樹

1095 zjoi2007 hide 捉迷藏 time limit 40 sec memory limit 256 mb submit 4152 solved 1756 submit status discuss description 捉迷藏 jiajia和wind是一對恩愛的夫妻,並且他們有很多...

最小路徑覆蓋,最小點覆蓋,最大獨立點集

node 1 最小路徑覆蓋 在乙個 的有向圖中,路徑覆蓋就是在圖中找一些路經,使之覆蓋了圖中的所有頂點,且任何乙個頂點有且只有一條路徑與之關聯 如果把這些路徑中的每條路徑從它的起始點走到它的終點,那麼恰好可以經過圖中的每個頂點一次且僅一次 如果不考慮圖中存在迴路,那麼每條路徑就是乙個弱連通子集 由上...