Codeforces 1209D Cow and Snacks

题目大意

\(n\) 个不同的糖果,从 \(1\)\(n\) 编号。有 \(k\) 个客人。要用糖果招待客人。
对于每个客人,这些糖果中恰有两个是其最爱。第 \(i\) 个客人最爱的糖果编号是 \(x_i\)\(y_i\)
\(k\) 个客人任意排列,他们按顺序去拿自己最爱的糖果。
客人要拿到至少一个最爱的糖果才满意。
求不满意的客人的最小数目。

数据范围

  • \(2 \le n \le 10^5\)
  • \(1 \le k \le 10^5\)
  • \(1 \le x_i, y_i \le n\), \(x_i \ne y_i\)

分析

这道题可以用图(graph)来刻画。
\(n\) 个糖果看成 \(n\) 个点。
把第 \(i\) 个客人看成连接 \(x_i, y_i\) 的无向边。
客人拿糖果可以看成从图中删掉对应的边,并将与这条边关联的端点也取走。
客人被满足等价于删边时至少有一个端点还在。

不难看出,一个连通分量有 \(c\) 个点意味着有且最多有 \(c - 1\) 个客人能被满足。

设共有 \(C\) 个连通分量,则有且至多有 \(N - C\) 个客人能被满足。

posted @ 2019-09-16 23:36  Pat  阅读(362)  评论(0编辑  收藏  举报