CF774A. Hongcow Builds A Nation 题解 简单dfs+组合计数

news/2024/10/25 1:39:53/文章来源:https://www.cnblogs.com/quanjun/p/18501641

题目链接:https://codeforces.com/problemset/problem/744/A

视频讲解:https://www.bilibili.com/video/BV1tZ1FYPELp?p=5

假设 \(c_i\) 所在的连通块大小(即包含节点个数)位 \(sz_i\)

\(sum = \sum\limits_{i=1}^k sz_i\)\(mx = \max\limits_{1 \le i \le k} sz_i\)

则可以新增的最多边数为 \(\sum\limits_{i=1}^k \frac{ sz_i \times (sz_i - 1) }{2} + \frac{ (n - sum) \times (n - sum - 1) }{2} + mx \times (n - sum) - m\)(具体分析可以参考视频讲解)

示例程序:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010;int n, m, k, c[maxn], sz[maxn], sum, mx, ans;
bool vis[maxn];
vector<int> g[maxn];int dfs(int u) {if (vis[u])return 0;vis[u] = true;int res = 1;for (auto v : g[u])res += dfs(v);return res;
}int main() {scanf("%d%d%d", &n, &m, &k);for (int i = 1; i <= k; i++)scanf("%d", c+i);for (int i = 0; i < m; i++) {int u, v;scanf("%d%d", &u, &v);g[u].push_back(v);g[v].push_back(u);}for (int i = 1; i <= k; i++) {sz[i] = dfs(c[i]);sum += sz[i];mx = max(mx, sz[i]);ans += sz[i] * (sz[i] - 1) / 2;}ans += (n - sum) * (n - sum - 1) / 2 + mx * (n - sum) - m;printf("%d\n", ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/821514.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[rCore学习笔记 030] 虚拟地址与地址空间

时隔很久,终于忙里偷闲可以搞一搞rCore,上帝啊,保佑我日更吧,我真的很想学会. 导读部分 首先还是要看官方文档. 我决定看一遍然后自己表述一遍(智将). 这里反复提到MMU,就是因为之前学MCU的时候有一个疑问,就是为什么MCU上不选择跑一个Linux,当时找到的答案是因为没有MMU. MMU的…

11. 使用MySQL之使用数据处理函数

1. 函数 与其他大多数计算机语言一样,SQL支持利用函数来处理数据。 函数一般是在数据上执行的,它给数据的转换和处理提供了方便。 在前一章中用来去掉串尾空格的RTrim()就是一个函数的例子。 补充: 函数没有SQL的可移植性强 能运行在多个系统上的代码称为可移植的(portable…

【CodeForces训练记录】Codeforces Round 981 (Div. 3)

https://codeforces.com/contest/2033 训练情况 22队长率先开出E题,但是结局可能还是掉分了 TAT赛后反思 这场太板了,D题有点反常(存疑?) A题 我们直接模拟位置的变化就行,先手 \(-2 \times i - 1\) 后手 \(+ 2 \times i - 1\),用一个while找到 \(>n\) 的地方来结束循…

东山Pi柒号-4-STM32MP157 TF-A移植

STM32MP157 TF-A 移植 在了解了 STM32MP 系列芯片的启动流程后,我们将开始进行东山 Pi 柒号的 TF-A 移植。 准备工作 首先,我们需要下载 STM32MP1 系列的 STM32MPU_Developer_Package,该包中包含编译器 SDK 和官方源码:STM32MP1 OpenSTLinux 开发套件 https://www.st.com.c…

【投资理财】一起来探索金融理财世界啦

各位程序员小伙伴们,大家都知道最近大 A 股市那叫一个起伏不定啊,就像坐过山车似的,刺激得很。咱程序员平时工作忙归忙,但不少同学对炒股还挺感兴趣的,甚至有的同学在工作的时候还会偷偷摸摸瞅几眼股市行情😜。我最近发现了一些很不错的金融理财资源,想着赶紧分享给大家…

第43篇 Linux上使用docker部署.net8项目详细教程

在docker上部署自己的.net8 webapi,以腾迅linux云服务为例: 1.安装docker 1.1 查看docker是否已安装: 命令:docker -v如果显示版本,说明已经安装成功,无需再安装 1.2 docker未安装,执行以下步骤安装 1.2.1 添加 Docker 软件源。 dnf config-manager --add-repo=http://m…

7-1将数组中的数逆序存放

24级一维数组 题目不难,就是格式啥的要看仔细楼#include<stdio.h> int main (){int a[11] = {0};int num;int input;scanf("%d",&num);for(int i=num-1;i>=0;i--){//逆序存放!!!scanf("%d",&input);a[i] = input;}for(int i=0;i<n…

无法删除文件,因为已在Windows资源管理器中打开

背景 文件夹/文件删不掉 解决 直接重启explorer即可。 win+x,a 打开终端。 kill -name explorer按理来说关闭后explorer会自动重启 start explorer图形界面方式 Ctrl+Shift+ESC,打开任务管理器。 点击详细信息,按名称排序找到explorer.exe,右键重新启动。

学习高校课程-软件设计模式-单例模式(lec5)

原文链接 Singleton: Intent Singleton is a creational design pattern that lets you ensure that a class has only one instance, while providing a global access point to this instance. Singleton 是一种创建性设计模式,它允许您确保一个类只有一个实例,同时提供对此…

手动上传图片,怎么调整大小和居中

原始格式![image](https://img2024.cnblogs.com/blog/2143851/202410/2143851-20241024173243352-290268296.png ) 目标格式<img src="https://img2024.cnblogs.com/blog/2143851/202410/2143851-20241024173243352-290268296.png" alt="image-2024070120285…