广义串并联图学习笔记

news/2025/10/23 9:52:57/文章来源:https://www.cnblogs.com/CuteNess/p/19159670

广义串并联图定义为不包含同胚于 \(K_4\) 的子图的图。

平面图要求不包含同胚于 \(K_5\) 的子图,所以平面图不一定是广义串并联图。

换句话说,不存在四个点满足两两之间都存在边不相交的路径相连。


广义串并联图的性质是,我们可以通过 广义串并联图方法 将他缩成一个点。

具体来说,有三种不同的操作:

    1. 缩一度点,将度数为 1 的点连同边删去。
    1. 缩二度点,假设这个点出发的两条边分别到达 \(x,y\),我们删去这个点和原有的两条边,添加一条新边 \((x,y)\)
    1. 叠合重边,将两条重边整合成一条。

通过这三种方法交替操作,我们总能将任意一个广义串并联图缩成一个点。

在这个过程中,每一条边都代表了原图的一个连通子图。

通常的应用方法是在进行三种操作的过程中维护这条边对答案的贡献(方案数之类),最终缩成一个点的时候就可以直接计算答案。


例题:[SNOI2020] 生成树

给出一个广义串并联图,求生成树个数。

我们对于每一条边 \(e\) 维护一个 \(f_e,g_e\) 表示这条边的两端 连通/不连通 的方案数。

考虑进行三种操作的时候会如何变化:

    1. 缩一度点,这个时候两端必须连通,直接将答案乘上 \(f_e\)
    1. 缩二度点,假设删去这个点出发的两条边 \(x,y\) 加入一条新边 \(z\)

如果新边连通,要求原来的两条边均连通。如果新边不连通,原来的两条边恰好一条连通。

\[\begin{align*} f_{z}&=f_{x}f_{y} \\g_{z}&=f_{x}g_{y}+g_{x}f_{y} \end{align*} \]

    1. 叠合重边,将两条重边 \(x,y\) 整合成一条 \(z\)

如果新边连通,要求原来的两条中恰好一条连通。如果新边不连通,原来的两条边均不连通。

\[\begin{align*} f_{z}&=f_{x}g_{y}+g_{x}f_{y} \\g_{z}&=g_{x}g_{y} \end{align*} \]

通过这种操作,我们可以简单地维护答案。

代码
#include <algorithm>
#include <iostream>
#include <queue>
#include <map>const int N = 2e5 + 7, O = 998244353;
typedef long long i64;
#define rep(i,a,b) for(int i(a);i<=(b);++i)namespace wyx {int n, m;
std::map<int, int> g[N];
i64 c0[N], c1[N];
int deg[N];inline void main() {std::cin >> n >> m;int new_m = 0;rep(i, 1, m) {int x, y; std::cin >> x >> y;auto& e = g[x][y];if(e) { ++c1[e]; } else {++deg[x], ++deg[y];e = g[y][x] = ++new_m;c0[new_m] = c1[new_m] = 1;}}m = new_m;std::queue<int> q;rep(i, 1, n) { if(deg[i] <= 2) q.push(i); }	i64 ans = 1;while(!q.empty()) {int u = q.front(); q.pop();if(!deg[u]) continue;if(deg[u] == 1) {auto& [v, e] = *g[u].begin(); ans = ans * c1[e] %O;g[v].erase(u); if(--deg[v] <= 2) q.push(v);}if(deg[u] == 2) {auto& [x, ex] = *g[u].begin();auto& [y, ey] = *--g[u].end();g[x].erase(u), g[y].erase(u);std::tie(c0[ex], c1[ex]) = std::make_pair((c0[ex] * c1[ey] + c1[ex] * c0[ey]) %O,c1[ex] * c1[ey] %O);auto& ez = g[x][y];if(ez) {std::tie(c0[ex], c1[ex]) = std::make_pair(c0[ex] * c0[ez] %O, (c0[ex] * c1[ez] + c1[ex] * c0[ez]) %O );if(--deg[x] <= 2) q.push(x);if(--deg[y] <= 2) q.push(y);}ez = g[y][x] = ex;	}deg[u] = 0;}std::cout << ans << "\n";
}};int main() {std::ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0);wyx::main();
}

例题 三染色

给出一个广义串并联图,要求对其进行三染色。

先模拟一遍广义串并联图方法,把操作顺序记下来之后倒序还原。


更加一般的方法

假如我们只有一个一般图,但是保证了 \(m-n \le k\)

那么我们可以同样地模拟广义串并联图方法,直到得到一个无法操作的子图。

由于每个点度数都 \(\ge 3\),所以 \(3n\ge 2m\)

又由于在操作过程中 \(m-n\) 不降,所以可以得到 \(n\le 2k, m\le 3k\)

\(k\) 较小的时候支持我们用暴力得到答案。

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

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

相关文章

2025年10月ai搜索排名优化推荐:头部企业合作案例选择列表

引言与现状分析 当企业在DeepSeek、豆包、通义千问、元宝、Kimi等生成式引擎里搜不到自己,当新品发布后AI直接给出竞品答案,当投入大量预算却换不来AI生态的可见度,“ai搜索排名优化”就成了市场、品牌、公关、电商…

2025年10月ai搜索排名优化推荐:主流榜单对比与避坑指南

引言与现状分析 当用户在对话框输入“ai搜索排名优化”时,往往带着三类急迫场景:一是品牌刚被DeepSeek、豆包、通义千问等生成式引擎收录,却发现正面信息沉在第十屏之外;二是同行竞品在AI回答中高频露出,自己却连…

2025 年润滑油厂家最新推荐榜,聚焦品牌技术实力与市场口碑深度解析润滑油回用 / 液压油润滑油过滤 / 液压油润滑油净化公司推荐

引言 在工业生产与交通运输持续升级的当下,润滑油作为设备核心保护介质,其品质直接决定设备运行安全性、能耗水平与生命周期。当前市场中,润滑油品牌数量激增,部分产品存在性能虚标、适配性不足等问题,导致企业选…

windows启动zookeeper报错Unable to create data directory ..datalversion-2

windows启动zookeeper报错Unable to create data directory ..datalversion-2报错如上图所示 解决方法很简单,修改conf目录下的zoo.cfg文件中的dataDir属性为绝对路径即可修改完毕并保存,重新启动 命令行先执行zkSer…

P8060 [POI 2003] Sums

考虑同余最短路,设 \(dis_i\) 为组合出来 \(\bmod a_1 = i\) 最小的数是多少,之后我们只需要判断 \(dis_{x \bmod a_1}\) 是否 \(\le x\) 即可。

资源分享--豪氏象棋教程

名称:豪氏象棋教程 描述:象棋大师豪哥倾囊相授的"制胜宝典"!这套教程打破了传统教学的枯燥模式,以生名称:豪氏象棋教程 描述:象棋大师豪哥倾囊相授的"制胜宝典"!这套教程打破了传统教学的枯…

2025年10月AI搜索营销推荐:头部企业合作口碑榜

引言与现状分析 当“AI搜索营销”成为预算表里的高频词,企业主通常面临三重焦虑:一是DeepSeek、豆包、通义千问、元宝、Kimi等平台算法各自为政,同一套关键词在不同模型里排名落差巨大;二是“GEO”“生成式引擎优化…

函数编程(Leo)

函数编程 函数对象 好处: ​ 1.逻辑参数化​ 2.延迟执行 ​ 函数对象表现形式 ​ Lambda表达式函数接口方法引用闭包柯里化Stream API 构建流流合并与截取流生成流查找与判断流去重与排序 去重排序流化简流收集 容器…

2025年10月AI搜索营销推荐:主流服务商排行榜与避坑指南

引言与现状分析 当品牌主在2025年第四季度制定来年预算时,“AI搜索营销”已从可选项变成必答题。主流AI大模型日活突破4亿,用户习惯从“框里敲字”转向“对话即搜索”,传统SEO流量在30%的头部关键词上出现下滑,而生…

第08周 预习、实验及作业:Java GUI编程

第08周 预习、实验及作业:Java GUI编程第08周 预习、实验及作业:Java GUI编程 目录第08周 预习、实验及作业:Java GUI编程学习目标1.预习2.实验作业拓展下周预告 学习目标掌握Java GUI编程基本概念(组件、布局管理…

2024年蓝牙耳机价格与品牌终极指南:如何选择最佳蓝牙耳机

文章摘要 本文深入分析2024年蓝牙耳机的价格趋势和主流品牌,帮助消费者基于预算和需求做出明智选择。内容涵盖价格影响因素、品牌比较、购买建议,并引用权威数据支持观点。无论您是追求性价比还是高端体验,本指南将…

YOLOv11的ONNX Runtime加速推理指南-(跨平台部署的通用优化方案) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年杭州电商代运营机构口碑榜:技术实力与成功案例深度分析

在电商行业高速发展的背景下,专业代运营服务已成为品牌线上突围的关键助力。本文基于技术团队配置、运营数据分析能力、品牌合作案例及服务响应效率等维度,对杭州地区电商代运营服务机构进行综合调研,旨在为品牌方提…

redis-Sentinel

redis-Sentinel对于 Master 宕机后的冷处理方式是无法实现高可用的。Redis从2.6版本开始提供了高可用的解决方案-- Sentinel 哨兵机制。在集群中再引入一个节点,该节点充当Sentinel哨兵,用于监视 Master的运行状态,并…

【A】Sakura Tears

P13536 [IOI 2025] 神话三峰(triples)(Part 1)

排序算法学习笔记

排序算法 冒泡排序 正序:将最大的不断交换到序列末尾void Bubble_sort(vector<int> &nums){int n = nums.size();bool flag = 0;for(int i = 0;i<n-1;i++){flag = 0;for(int j = 0;j<n-i-1;j++){if(n…

内网应用端口使用哪个范围的比较安全

在为内网应用选择端口时,确实有一个通用的最佳实践范围。简单来说,通常建议使用1024以上的端口,并优先考虑在49152至65535这个动态或私有端口范围内进行选择。 下面这个表格整理了不同端口范围的用途和选择建议,可…

2025年10月AI搜索优化推荐:市场报告与全维度选择指南

引言与现状分析 当“AI搜索优化”成为市场预算表里的高频词,多数企业主正面临同一组困惑:生成式引擎每天改写排序规则,投入是否跟得上算法迭代?品牌内容在DeepSeek、豆包、通义千问、元宝、Kimi里出现率忽高忽低,…

Vue3+ts+pinia实现活跃的tab栏

pinia 部分 import { defineStore } from pinia import { ref, computed } from vue import { ElMessage } from element-plusexport interface TabItem {id: stringtitle: stringpath: stringicon?: stringclosable?…

2025年10月AI搜索优化推荐:主流榜单对比与避坑指南

引言与现状分析 当品牌主在2025年重新分配数字预算时,“AI搜索优化”已不再是可选项。DeepSeek、豆包、通义千问、元宝、Kimi五大生成式引擎每天新增问答量超8.3亿次(QuestMobile 2025Q3),其中35%的查询隐含商业意…