洛谷P1330 封鎖陽光大學 dfs

2022-06-26 03:15:13 字數 1307 閱讀 4754

題目

題意:乙個無向邊,乙個河蟹可以占領乙個點,但乙個點只能被乙個河蟹占領。

占領了乙個點之後,這個點所有的邊都刪除。

問至少需要多少個河蟹可以讓所有的邊都被刪除。

思路

乍一看有點無從下手。但實際上這個題就是乙個將圖上的點進行黑白著色的問題。

如果乙個點被著了黑色,那麼他的鄰接點都要被著白色。

這道題給的圖可能是乙個森林,並且著色其實兩個顏色可以對換。所以對於每乙個連通塊,至少應該有的河蟹數是兩個顏色中較少的那個。

1 #include2 #include3 #include4 #include

5 #include6 #include7 #include8 #include9 #include10 #include11 #include12

13#define inf 0x7fffffff

14using

namespace

std;

15 typedef long

long

ll;16 typedef pairpr;

1718

intn, m;

19const

int maxn = 10005;20

const

int maxm = 1e5 + 5;21

intcol[maxn];

22int head[maxn], to[maxm * 2], nxt[maxm * 2

];23

int tot = 1;24

25void add(int x, int

y)26

3435

int cnt[5

];36

bool dfs(int c, int

x)37

41else

if(col[x])return

true

;42 col[x] =c;

43 cnt[c]++;

44for(int i = head[x]; i; i =nxt[i])

48return

true;49

}5051int

main()

5259

bool flag = true;60

int ans = 0;61

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

67else71}

72}73if(!flag)

76else

79 }

洛谷 P1330 封鎖陽光大學

曹是乙隻愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園裡刷街。河蟹看到歡快的曹,感到不爽。河蟹決定封鎖陽光大學,不讓曹刷街。陽光大學的校園是一張由n個點構成的無向圖,n個點之間由m條道路連線。每只河蟹可以對乙個點進行封鎖,當某個點被封鎖後,與這個點相連的道路就被封鎖了,曹就無法在與這些道路上...

洛谷 P 1330 封鎖陽光大學

題目描述 曹是乙隻愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園裡刷街。河蟹看到歡快的曹,感到不爽。河蟹決定封鎖陽光大學,不讓曹刷街。陽光大學的校園是一張由n個點構成的無向圖,n個點之間由m條道路連線。每只河蟹可以對乙個點進行封鎖,當某個點被封鎖後,與這個點相連的道路就被封鎖了,曹就無法在與...

洛谷 P1330 封鎖陽光大學

曹是乙隻愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園裡刷街。河蟹看到歡快的曹,感到不爽。河蟹決定封鎖陽光大學,不讓曹刷街。陽光大學的校園是 一張由n個點構成的無向圖,n個點之間由m條道路連線。每只河蟹可以對乙個點進行封鎖,當某個點被封鎖後,與這個點相連的道路就被封鎖了,曹就無法在與這些道路...