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))

[JSOI2008] 最小生成树计数

题目描述

现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树。(如果两棵最小生成树中至少有一条边不同,则这两个最小生成树就是不同的)。由于不同的最小生成树可能很多,所以你只需要输出方案数对 31011 31011 31011 的模就可以了。

输入格式

第一行包含两个数, n n n m m m,其中 1 ≤ n ≤ 100 1 \le n \le 100 1n100 1 ≤ m ≤ 1000 1 \le m \le 1000 1m1000,表示该无向图的节点数和边数。每个节点用 1 ∼ n 1 \sim n 1n 的整数编号。

接下来的 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 1c109

数据保证不会出现自回边和重边。注意:具有相同权值的边不会超过 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 1n100 1 ≤ m ≤ 1000 1 \le m \le 1000 1m1000 1 ≤ c i ≤ 1 0 9 1\leq c_i\leq 10^9 1ci109

先引入一个引理:

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

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

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

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

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

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

CODE
    
    //2024.8.17
    //by white_ice
    //[JSOI2008] 最小生成树计数 |P4208
    #include
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
判断给定的时间段是否在当前日期范围内涉及到对两个时间点的比较。首先,我们需要了解当前的时间,然后将开始时间和结束时间分别与当前时间进行对比。 给出的日期区间是从2019年7月17日到2029年7月17日。 现在我们假设有以下几种情况: ### 情况一: 当前日期早于2019年7月17日 例如,如果今天是2023年5月1日,那么2019年的日期区间显然不在当前日期范围内。 ### 情况二: 当前日期处于2019年7月17日至2029年7月16日之间 例如,如果今天是2024年8月1日,则这个时间段从2019年7月17日至2024年7月16日确实包含在当前日期范围内。 ### 情况三: 当前日期晚于2029年7月17日 比如,假设今天是2030年6月30日,那么给出的时间范围2019年至2029年则不在现在的日期范围内了。 ### 判定逻辑: 为了准确判断,我们需要考虑以下几个关键点: 1. **起始日期**(2019年7月17日)必须小于等于当前日期。 2. **结束日期**(2029年7月17日)必须大于等于当前日期。 满足这两个条件时,说明给定的时间段存在于当前日期范围内。 --- **实例检查**: 设今天的日期为2025年9月20日, - **起始日期**:2019年7月17日 < 2025年9月20日, - **结束日期**:2029年7月17日 > 2025年9月20日。 因此,2019年7月17日到2029年7月17日这一时间段在2025年9月20日所在的日期范围内。 --- --- ## 相关问题 - 针对上述解答的深入探讨: 1. **如何计算具体日期是否落在指定区间内?** 计算这个问题通常需要基于具体的编程语言和环境(如Python、JavaScript等),利用日期库的功能来进行时间戳转换和比较操作。 2. **对于非连续日期的判断呢?** 如果需要判断特定的非连续日期是否全部位于给定区间内,这涉及更复杂的逻辑判断和日期之间的排序与比较。 3. **处理跨越闰年的日期区间判断?** 考虑到闰年的影响,特别是在较长的日期跨度下,需要额外关注每年是否是闰年,并调整相应的日期规则(例如,每个月的天数)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值