CF1209D Cow and Snacks 题解

考虑以零食为点建无向图,(u,v)E 当且仅当存在一个客人喜欢零食 u,v

对于其中每一个大小为 m 的连通块,总能安排出一种顺序使得连通块中的零食可以满足 m1 个客人,

即第一个客人吃掉其中 2 个零食,剩下 m2 个客人分别吃掉其中 1 个零食。

也就是在满足 n 个客人的前提下,图中每多一个连通块,就少一个能满足的客人。

并查集统计图中连通块个数 c,答案即为 kn+c

#include <cstdio>
int n, k, u, v, c, f[100050];
int F(int x) {return x == f[x] ? x : f[x] = F(f[x]);}
int main()
{
    scanf("%d%d", &n, &k);for(int i = 1;i <= n;++i) f[i] = i;for(int
    i = 0;i < k;++i) scanf("%d%d", &u, &v), f[F(u)] = F(v);for(int i
    = 1;i <= n;++i) c += i == F(i);return printf("%d", k - n + c), 0;
}
posted @   Jijidawang  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示