P9584 「MXOI Round 1」城市

题目描述

小 C 是 F 国的总统,尽管这个国家仅存在于网络游戏中,但他确实是这个国家的总统。

F 国由 n 个城市构成,这 n 个城市之间由 n−1 条双向道路互相连接。保证从任意一个城市出发,都能通过这 n−1 条双向道路,到达任意一个城市。

当然,通过这些双向道路是要收费的。通过第 i 条双向道路,需要花费 ci​ 元。我们称 ci​ 为第 i 条双向道路的费用。

我们定义 cost(x,y) 表示从城市 x 到城市 y 的简单路径上,所有经过的双向道路的费用之和。特殊地,当 x=y 时,cost(x,y)=0。

为了促进 F 国发展,小 C 新建了一个城市 n+1。现在他需要再新建一条双向道路,使得城市 n+1 也可以通过这 n 条双向道路到达任意一个城市。

他共有 q 个新建道路的方案,每个方案会给定两个参数 ki​,wi​;对于每一个方案,你需要求出在新建一条连接城市 ki​ 和城市 n+1 且费用为 wi​ 的双向道路后,所有 cost(i,j) 之和,即 \sum_{i=1}^{n+1}\sum_{j=1}^{n+1}cost(i,j)

由于答案可能很大,所以你只需要输出答案对 998244353 取模的结果。

方案之间相互独立,也就是说所有方案不会影响现有的道路,这些方案不会真正被施行。

输入格式

第一行两个整数 n,q。

接下来 n−1 行,第 i 行三个整数 ui​,vi​,ci​,表示存在一条连接城市 ui​ 和城市 vi​ 的双向道路,其费用为 ci​。

接下来 q 行,第 i 行两个整数 ki​,wi​,表示一个新建道路的方案。

输出格式

共 q 行,每行一个整数,第 i 行的整数表示在新建一条连接城市 ki​ 和城市 n+1 且费用为 wi​ 的双向道路后,所有 cost(i,j) 之和对 998244353 取模的结果,即 \sum_{i=1}^{n+1}\sum_{j=1}^{n+1}cost(i,j)mod998244353。

输入输出样例

输入 #1

4 2
2 1 3
3 2 2
4 2 4
1 2
2 2

输出 #1

100
88

输入 #2

9 5
2 3 6
6 1 4
5 2 10
2 4 1
9 1 9
2 8 3
1 2 3
7 4 8
4 9
7 3
6 1
9 7
2 1

输出 #2

1050
1054
970
1148
896

说明/提示

【样例解释 #1】

在新建一条连接城市 1 和城市 5 且费用为 2 的双向道路后,F 国的道路如下图所示:

例如,此时 cost(4,5)=9,cost(1,3)=5。

容易求得此时 \sum_{i=1}^{n+1}\sum_{j=1}^{n+1}cost(i,j)=100。

【样例 #3】

见附加文件中的 city/city3.in 与 city/city3.ans

该样例满足测试点 4 的限制。

【样例 #4】

见附加文件中的 city/city4.in 与 city/city4.ans

该样例满足测试点 11 的限制。

【样例 #5】

见附加文件中的 city/city5.in 与 city/city5.ans

该样例满足测试点 14 的限制。

【样例 #6】

见附加文件中的 city/city6.in 与 city/city6.ans

该样例满足测试点 20 的限制。

【数据范围】

对于 100% 的数据,2≤n≤2×10^{5},1≤q≤2×10^{5},1≤ui​,vi​,ki​≤n,1≤ci​,wi​≤10^{6},保证从任意一个城市出发,都能通过原本存在的 n−1 条双向道路,到达任意一个城市。

测试点编号n≤q≤特殊性质
1∼38080
4∼750005000
8∼10500010^{5}
11∼1310^{5}10^{5}A
14∼1610^{5}10^{5}B
17∼2010^{5}10^{5}

特殊性质 A:保证对于所有的 1≤i<n,都有 ui​=i,vi​=i+1。

特殊性质 B:保证对于所有的 1≤i≤q,都有 ki​=1。

附件下载

city数据 1.24MB

参考代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+5;
const int mod=998244353;
int tot,d[N],size[N],a1,sum[N],w[N],h[N*2],to[N*2],ne[N*2],n,m,ans;
void add(int a,int b,int c)
{
	tot++;
	ne[tot]=h[a];
	h[a]=tot;
	to[tot]=b;
	w[tot]=c;
}
void dfs1(int u,int fa)
{
	size[u]=1;
	for(int i=h[u];i;i=ne[i])
	{
		int v=to[i];
		if(fa==v)continue;
		dfs1(v,u);
		d[u]=(d[u]+d[v]+w[i]*size[v])%mod;
		size[u]+=size[v];
	}
}
void dfs2(int u,int fa)
{
	for(int i=h[u];i;i=ne[i])
	{
		int v=to[i];
		if(v==fa)continue;
		d[v]=(d[u]-size[v]*w[i]%mod+w[i]*(n-size[v])%mod+mod)%mod;
		dfs2(v,u);
	}
}
signed main()
{
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	int a,b,c;
	cin>>n>>m;
	for(int i=1;i<n;i++)
	{
		cin>>a>>b>>c;
		add(a,b,c);
		add(b,a,c);
	}
	dfs1(1,0);
//	cout<<d[1]<<'\n';
	dfs2(1,0);
	for(int i=1;i<=n;i++)
		ans=(ans+d[i])%mod;
	for(int i=1;i<=m;i++)
	{
		cin>>a>>b;
		int k=(d[a]+n*b)%mod;
		k=k*2%mod;
		cout<<(k+ans)%mod<<'\n';
	}
	return 0;
} 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是Docker多架构容器镜像

什么是Docker多架构容器镜像 在 Docker 中&#xff0c;同一个 Docker 镜像可以在不同的平台上运行&#xff0c;例如在 x86、ARM、PowerPC 等不同的 CPU 架构上。 为了支持这种多平台的镜像构建和管理&#xff0c;Docker 在 17.06 版本时引入了 Manifest 的概念&#xff0c;在…

Baklib知识中台构建企业智能运营核心架构

内容概要 在数字化转型的浪潮中&#xff0c;企业对于知识的系统化管理需求日益迫切。Baklib作为新一代的知识中台&#xff0c;通过构建智能运营核心架构&#xff0c;为企业提供了一套从知识汇聚到场景化落地的完整解决方案。其核心价值在于将分散的知识资源整合为统一的资产池…

深度学习机器学习:常用激活函数(activation function)详解

目录 Sigmoid Function ReLU&#xff08;Rectified Linear Unit&#xff09; LeakyReLU&#xff08;Leaky Rectified Linear Unit&#xff09; ClippedReLU&#xff08;Clipped Rectified Linear Unit&#xff09; PRelu&#xff08;Parametric ReLU&#xff09; Tanh&am…

【面试】网络安全常问150道面试题

1&#xff0c;拿到一个待测网站&#xff0c;你觉得应该先做什么&#xff1f; 信息收集&#xff1a; 服务器相关---&#xff1a;## 系统版本&#xff0c;真实IP&#xff0c;开放端口&#xff0c;使用的中间件 指纹信息---## 有无cdn加速&#xff0c;dns解析记录&#xff0c;是不…

【Linux】--- 基础开发工具之yum/apt、vim、gcc/g++的使用

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; Linux网络编程 本篇博客我们来认识一下Linux中的一些基础开发工具 --- yum,vim,gcc/g。 &#x1f3e0; yum &#x1f3b8; 什么是yum 当用户想下载软…

物联网平台-分布式的设备接入与管理系统

乐吾乐物联网平台是由乐吾乐自主研发的一款分布式的设备接入与管理系统&#xff0c;专为满足不断增长的设备接入和数据处理需求而设计。平台集数据采集、分析、监控、告警和通知等功能于一体&#xff0c;并融合了乐吾乐大屏可视化和乐吾乐3D数字孪生技术&#xff0c;帮助用户快…

Day65_20250213图论part9_dijkstra(堆优化版)|Bellman_ford算法精讲

Day65_20250213图论part9_dijkstra(堆优化版)|Bellman_ford算法精讲 dijkstra(堆优化版) 题目 https://www.programmercarl.com/kamacoder/0047.%E5%8F%82%E4%BC%9Adijkstra%E5%A0%86.html 小明参加科学大会 思路 思路 朴素版的dijkstra&#xff0c;时间复杂度为O(n^2)&am…

动手实现自己的 JVM——Go!(ch01)

动手实现自己的 JVM——Go&#xff01;&#xff08;ch01&#xff09; 参考张秀宏老师的《自己动手写java虚拟机》 为什么需要命令行 在 JMV 中&#xff0c;要运行一个 Java 文件&#xff08;字节码&#xff09;&#xff0c;首先需要找到这个文件。那么&#xff0c;如何找到文件…

IIS部署netcore程序后,出现500.30错误解决方案之一

netcore程序部署到IIS后一直出现错误&#xff0c;访问首页后会跳转到登录页地址&#xff0c;然后看到如下错误 HTTP Error 500.30 - ANCM In-Process Start Failure Common solutions to this issue: The application failed to start The application started but then stopp…

将Docker容器打包成镜像提交

前言 Docker 是一个开源软件&#xff0c;也是一个开放平台&#xff0c;用于开发应用、交付&#xff08;shipping&#xff09;应用、运行应用。 Docker允许用户将基础设施&#xff08;Infrastructure&#xff09;中的应用单独分割出来&#xff0c;形成更小的颗粒&#xff08;容…

【设计模式】【行为型模式】命令模式(Command)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f44d; 欢迎点赞、收藏、关注&#xff0c;跟上我的更新节奏 &#x1f3b5; 当你的天空突…

【DDD系列-3】DDD战术设计实践分享

DDD 战术设计概念​ ​ ​​ TMF2 中的概念&#xff1a;​ 领域能力&#xff1a;​ 扩展点&#xff1a;​ DDD 战术设计使用场景​ 复杂业务场景​ 复杂来源面对的需求方更加多样化。​ 1 相同场景不同垂直业务方的需求&#xff08;1688&#xff0c;淘宝&#xff0c;天…

基于单片机的仓库安防系统(论文+源码)

2.1 需求分析 仓库由于存有大量物品&#xff0c;因此对仓库的监控非常重要&#xff0c;目前仓库已经普遍装有安防系统&#xff0c;以保证仓库的安全&#xff0c;本次基于单片机的仓库安防系统设计&#xff0c;在功能上设计如下&#xff1a; 用户可通过IC卡进入仓库&#xff1…

使用 AutoMQ 和 Tinybird 分析用户网购行为

前言 在当前竞争激烈的市场环境中&#xff0c;数据分析已成为企业实现差异化和精准营销的关键。通过分析用户行为数据&#xff0c;企业能够深入了解用户的习惯、偏好和行为模式&#xff0c;从而更精准地定位目标市场&#xff0c;制定个性化营销策略&#xff0c;并提供定制化推…

小米 R3G 路由器刷机教程(Pandavan)

小米 R3G 路由器刷机教程&#xff08;Pandavan&#xff09; 一、前言 小米 R3G 路由器以其高性价比和稳定的性能备受用户青睐。然而&#xff0c;原厂固件的功能相对有限&#xff0c;难以满足高级用户的个性化需求。刷机不仅可以解锁路由器的潜能&#xff0c;还能通过第三方固…

Python数据可视化 - Matplotlib教程

文章目录 前言一、Matplotlib简介及安装1. Matplotlib简介2. 安装Matplotlib 二、Matplotlib Pyplot1. Pyplot介绍2. Pyplot中方法介绍2.1 创建和管理图形2.2 绘制图形2.3 设置图形属性2.4 保存和展示 三、Matplotlib绘图标记1. 介绍2. 基本用法3. 标记大小与颜色4. 标记样式列…

DeepSeek 与网络安全:AI 驱动的智能防御

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 随着人工智能&#xff08;AI&#xff09;的快速发展&#xff0c;深度学习技术正渗透到多个领域&#xff0c;从医疗诊断到…

STM32——HAL库开发笔记19(串口中断接收实验)(参考来源:b站铁头山羊)

本实验&#xff0c;我们以中断的方式使得串口发送数据控制LED的闪烁速度&#xff0c;发送1&#xff0c;慢闪&#xff1b;发送2&#xff0c;速度正常&#xff1b;发送3&#xff0c;快闪。 一、电路连接图 二、实现思路&CubeMx配置 1、实现控制LED的闪烁速度 uint32_t bli…

开关电源实战(一)宽范围DC降压模块MP4560

系列文章目录 文章目录 系列文章目录MP4560MP4560 3.8V 至 55V 的宽输入范围可满足各种降压应用 MOSFET只有250mΩ 输出可调0.8V-52V SW:需要低VF肖特基二极管接地,而且要靠近引脚,高压侧开关的输出。 EN:输入使能,拉低到阈值以下关闭芯片,拉高或浮空启动 COMP:Compens…

网络IP地址冲突故障,快速解决方案!

由于网络被广泛运用&#xff0c;网络规模持续变大&#xff0c;对应的 IP 地址分配也越来越多&#xff0c;IP 地址冲突的情况日益严重&#xff0c;在一定程度上对网络的正常运行造成了影响。 要维护网络稳定、高效地运行&#xff0c;解决 IP 地址冲突的问题就成了网络管理里的一…