2024.8.17


130124202408171002


DATE #:20240817

ITEM #:DOC

WEEK #:SATURDAY

DAIL #:捌月拾肆

TAGS

复制代码
	
< BGM = "快哉风 -- 黄金玉米王" >
< theme = oi-language >
< theme = oi-graph theory >
< [空] > 
< [空] >
复制代码
取次花丛懒回顾,半缘修道半缘君 -- 元稹《离思五首·其四》

P4208 \[JSOI2008\] 最小生成树计数\](\[P4208 [JSOI2008\] 最小生成树计数 - 洛谷 \| 计算机科学教育新生态 (luogu.com.cn)](https://www.luogu.com.cn/problem/P4208)) ## \[JSOI2008\] 最小生成树计数 ### 题目描述 现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树。(如果两棵最小生成树中至少有一条边不同,则这两个最小生成树就是不同的)。由于不同的最小生成树可能很多,所以你只需要输出方案数对 31011 31011 31011 的模就可以了。 ### 输入格式 第一行包含两个数, n n n 和 m m m,其中 1 ≤ n ≤ 100 1 \\le n \\le 100 1≤n≤100, 1 ≤ m ≤ 1000 1 \\le m \\le 1000 1≤m≤1000,表示该无向图的节点数和边数。每个节点用 1 ∼ n 1 \\sim n 1∼n 的整数编号。 接下来的 m m m 行,每行包含两个整数: a , b , c a,b,c a,b,c,表示节点 a , b a,b a,b 之间的边的权值为 c c c,其中 1 ≤ c ≤ 1 0 9 1 \\le c \\le 10\^9 1≤c≤109。 数据保证不会出现自回边和重边。注意:具有相同权值的边不会超过 10 10 10 条。 ### 输出格式 输出不同的最小生成树有多少个。你只需要输出数量对 31011 31011 31011 的模就可以了。 ### 样例 #1 #### 样例输入 #1 4 6 1 2 1 1 3 1 1 4 1 2 3 2 2 4 1 3 4 1 #### 样例输出 #1 8 ### 提示 #### 数据范围及约定 对于全部数据, 1 ≤ n ≤ 100 1 \\le n \\le 100 1≤n≤100, 1 ≤ m ≤ 1000 1 \\le m \\le 1000 1≤m≤1000, 1 ≤ c i ≤ 1 0 9 1\\leq c_i\\leq 10\^9 1≤ci≤109。

先引入一个引理:

对于一个图的最小生成树,每个边权的边出现的次数是一样的

证明:模拟kruskal的过程,我们在给边排序时,交换同权的边并没有什么影响

那么我们先求解出最小生成树,并依次计算权值

考虑,当我们要加入权值为 i i i的若干条边时,

前面加入的边已经使其变成了几个联通块,只要考虑用权值为 i i i的边跑一次生成树数量即可,

之后对每个边权都依次操作
CODE

复制代码
    //2024.8.17
    //by white_ice
    //[JSOI2008] 最小生成树计数 |P4208
    #include
相关推荐
岁忧5 分钟前
LeetCode 高频 SQL 50 题(基础版)之 【高级字符串函数 / 正则表达式 / 子句】· 上
sql·算法·leetcode
eachin_z1 小时前
力扣刷题(第四十九天)
算法·leetcode·职场和发展
闻缺陷则喜何志丹1 小时前
【强连通分量 缩点 拓扑排序】P3387 【模板】缩点|普及+
c++·算法·拓扑排序·洛谷·强连通分量·缩点
机器学习之心2 小时前
机器学习用于算法交易(Matlab实现)
算法·机器学习·matlab
AL流云。2 小时前
【优选算法】C++滑动窗口
数据结构·c++·算法
qq_429879673 小时前
省略号和可变参数模板
开发语言·c++·算法
飞川撸码4 小时前
【LeetCode 热题100】网格路径类 DP 系列题:不同路径 & 最小路径和(力扣62 / 64 )(Go语言版)
算法·leetcode·golang·动态规划
Neil今天也要学习4 小时前
永磁同步电机参数辨识算法--IPMSM拓展卡尔曼滤波全参数辨识
单片机·嵌入式硬件·算法
yzx9910135 小时前
基于 Q-Learning 算法和 CNN 的强化学习实现方案
人工智能·算法·cnn
亮亮爱刷题5 小时前
算法练习-回溯
算法