P3043 [USACO12JAN] Bovine Alliance G 题解

news/2024/11/10 15:53:12/文章来源:https://www.cnblogs.com/FRZ29/p/18336480

P3043 [USACO12JAN] Bovine Alliance G

题目传送门

思路

首先分情况讨论每种联通块的可能,有三种不同的情况会对答案 \(ans\) 产生不同的贡献。

联通块有环

1
如图,因为每条边都有要有归属,所以环上的边只能全都顺时针或逆时针属于某个点,且不在环上的点仅有一种可能。

因此该情况对答案的贡献为 \(ans \times 2\)

联通块为链

2
对于一条链,边数比点数小 1 所以仅有一个点是没有边的,而若确认某个点没有边的话,边的所属仅有一种可能。因此答案的贡献为 \(ans \times t\)\(t\) 为该联通块点的个数。

联通块内边数大于等于点数

3
问题的答案为 \(0\) ,直接结束了。

转化

问题变为判断联通块内的情况,对此,利用联通块内度数除以 \(2\) 等于边数,判断点数与边数的关系即可。

代码

#include <iostream>
#include <cstdio>
typedef long long LL;using namespace std;const int mod = 1e9 + 7, N = 1e5 + 5;#define MOD(x) ((x + mod) % mod)
#define LF(i, __l, __r) for (int i = __l; i <= __r; i++)
#define RF(i, __r, __l) for (int i = __r; i >= __l; i--)int head[N], ver[N * 2], nxt[N * 2], edge[N * 2];
int n, m, tot = 1;
bool vis[N];
LL ans = 1, cnt, cnt1;void add(int u, int v) {ver[++tot] = v;nxt[tot] = head[u], head[u] = tot;
}void dfs(int u) {vis[u] = true, cnt++;for (int i = head[u]; i; i = nxt[i]) {cnt1++;if (!vis[ver[i]]) dfs(ver[i]);}
}int main() {scanf("%d%d", &n, &m);LF(i, 1, m) {int x, y;scanf("%d%d", &x, &y);add(x, y), add(y, x);}LF(i, 1, n) {if (!vis[i]) {cnt = cnt1 = 0;dfs(i);if (cnt == cnt1 / 2) ans = MOD(ans * 2);else if (cnt > cnt1 / 2) ans = MOD(ans * cnt);else { ans = 0; break; } }}printf("%lld", ans);return 0;
}

三军可夺帅也,匹夫不可夺志也。

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

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

相关文章

组合数学学习笔记(持续完善中)

基础知识 一、加法原理 完成某个工作有 \(n\) 类办法,第 \(i\) 类办法有 \(a_i\) 种,则完成此工作的方案数有 \(\sum\limits _{i=1}^n a_i\) 种。 二、乘法原理 完成某个工作有 \(n\) 个步骤,第 \(i\) 个步骤有 \(b_i\) 种,则完成此工作的方案数有 \(\prod\limits _{i=1}^n…

Apple Safari 17.6 - macOS 专属浏览器 (独立安装包下载)

Apple Safari 17.6 - macOS 专属浏览器 (独立安装包下载)Apple Safari 17.6 - macOS 专属浏览器 (独立安装包下载) 适用于 macOS Ventura 和 macOS Monterey 的 Safari 浏览器 17 请访问原文链接:https://sysin.org/blog/apple-safari-17/,查看最新版。原创作品,转载请保留出…

Gartner 魔力象限:安全信息和事件管理 (SIEM) 2024

Gartner Magic Quadrant for Security Information and Event Management 2024Gartner Magic Quadrant for Security Information and Event Management 2024 Gartner 魔力象限:安全信息和事件管理 2024 请访问原文链接:https://sysin.org/blog/gartner-magic-quadrant-siem-…

Metasploit Pro 4.22.2-2024072501 (Linux, Windows) - 专业渗透测试框架

Metasploit Pro 4.22.2-2024072501 (Linux, Windows) - 专业渗透测试框架Metasploit Pro 4.22.2-2024072501 (Linux, Windows) - 专业渗透测试框架 Rapid7 Penetration testing, release Jul 25, 2024 请访问原文链接:https://sysin.org/blog/metasploit-pro-4/,查看最新版。…

C#中常用集合类型

原文:C#中常用集合类型 - Y00 - 博客园 (cnblogs.com)在C#中,集合是用于存储和操作一组数据项的数据结构。这些集合通常位于 System.Collections 和 System.Collections.Generic 命名空间中。下面我将概述C#中几种常用的集合类型及其特点: 1. System.Collections 命名空间中…

[实践]wireguard安装和配置

wireguard安装和配置,实现异地组网目录Server Install & ConfigUbuntu 20.0.4 install wireguard生成私钥&公钥开启内核IP转发配置文件启动&停止wg-quicksystemctlClient Install & Config下载ConfigmacOS Server Install & Config Ubuntu 20.0.4 install…

费曼积分法——以一个简单的例子讲解

今天又又又刷到一个视频,很想睡觉(昨晚熬了个大夜),但是又临近午饭不能睡,只能水篇随笔来打发时间了。 什么是费曼积分法? 先看看官方解释: 费曼积分法(Feynman integral)是一种求解复变函数定积分的计算方法,由理查德费曼(Richard P. Feynman)提出。这种方法特别适…

wireguard安装和使用

wireguard安装和使用目录Server Install & ConfigUbuntu 20.0.4 install wireguard生成私钥&公钥开启内核IP转发配置文件启动&停止wg-quicksystemctlClient Install & Config下载ConfigmacOS Server Install & Config Ubuntu 20.0.4 install wireguard sud…

Adam-mini:内存占用减半,性能更优的深度学习优化器

Adam(W)目前为训练LLM的主流优化器,但其内存开销较大,这是因为Adam优化器需要存储一阶动量m和二阶动量v,总内存占用至少是模型大小的两倍,这对现有的高端显卡也是一种负担。论文提出一种新的优化器Adam-mini,在不牺牲性能的情况下减少Adam优化器的内存占用。 https://avo…

稀土领域生产一体化管控系统建设案例

经过2个月的详细调研,**稀土目前缺少生产车间之间数据协同交互、缺少完整的生产工序数据协同监测和分析,无法及时了解生产过程和经营情况,更无法进行有效的生产过程优化。本项目推动**稀土生产环节的数字化、信息化和智能化改造,从行业、战略、技术和市场等方案全面提升**稀…

使用keil进行51单片机的开发

首先下载Keil 打开https://www.keil.com/download/product/ 选择C51进行下载:表格里面的信息瞎填就完了。然后点击submit然后下载安装即可激活Keil 右键桌面的keil软件图标,使用管理员权限打开。 点击左上角的file->license management 复制CID打开注册机软件选择c51和pro…

使用 useState 管理响应式状态

title: 使用 useState 管理响应式状态 date: 2024/8/1 updated: 2024/8/1 author: cmdragon excerpt: 摘要:本文详细介绍了在Nuxt3框架中使用useState进行响应式状态管理的方法,包括其基本概念、优势、使用方法、共享状态实现以及性能优化技巧。useState支持服务器端渲染(…