传智杯#5练习赛_树的变迁
admin
2024-02-10 18:42:54
0

链接

  • 点此跳转

思路

考察知识点:并查集。

题目描述

给定一棵具有 nnn 个节点的树,每个节点有一个初始权值 aia_iai​。

一共需要进行 mmm 次操作,每次操作包括:

  • 1 e 编号为 eee 的边突然消失,使得它所在的那棵树变成了两棵树。

  • 2 u val 编号为 uuu 的节点的权值变成了 valvalval。

  • 3 u 进行了一次查询,查询 uuu 所在的那棵树的权值之和。

现在你需要来模拟上述事件,以了解树的变迁。

分析

由于查询是一棵树的权值之和,可以考虑使用并查集维护一个连通块的权值之和。

首先读入所有边,然后读入所有操作,将操作存起来。

如果操作是删除某个边,将该边标记,进行并查集合并时,不使用这条边。

然后倒序遍历操作:

  • 如果是删除边,将两点所在并查集合并。
  • 如果是查询,直接查询祖宗节点,将祖宗节点的存的权值之和加入答案。
  • 如果是将点赋值。首先查询该点的根节点,然后取出该点上一次的值,然后在权值之和减去该点两次值的差。

AC代码

// #pragma GCC opimize(3)
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
// #include 
// #include 
#define endl '\n'
#define x first
#define y second
#define fi first
#define se second
#define PI acos(-1)
// #define PI 3.1415926
#define LL long long
#define INF 0x3f3f3f3f
#define lowbit(x) (-x&x)
#define PII pair
#define ULL unsigned long long
#define PIL pair
#define all(x) x.begin(), x.end()
#define mem(a, b) memset(a, b, sizeof a)
#define rev(x) reverse(x.begin(), x.end())
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)using namespace std;const int N = 1e5 + 10;struct Edge {int u, v;bool st;
}edges[N];struct opion {int op, u;
}ops[N];int p[N], sum[N];
int n, m;
vector last[N], ans;int find(int x) {if (x == p[x]) return x;return p[x] = find(p[x]);
}void merge(int a, int b) {int pa = find(a), pb = find(b);if (pa != pb) {p[pa] = pb;sum[pb] += sum[pa];sum[pa] = 0;}
}void solve() {cin >> n >> m;for (int i = 1; i <= n; i ++ ) {int val; cin >> val;last[i].push_back(val);sum[i] = val, p[i] = i;}for (int i = 1; i < n; i ++ ) {int u, v;cin >> u >> v;edges[i] = {u, v, true};}for (int i = 1; i <= m; i ++ ) {int op, u, val;cin >> op >> u;if (op == 1){edges[u].st = false;} else if (op == 2) {cin >> val;last[u].push_back(val);sum[u] = val;}ops[i] = {op, u};}for (int i = 1; i < n; i ++ ) {Edge e = edges[i];if (e.st) merge(e.u, e.v);}for (int i = m; i > 0; i -- ) {int op = ops[i].op, u = ops[i].u;if (op == 1) {int a = edges[u].u, b = edges[u].v;merge(a, b);} else if (op == 2) {int won = last[u].back();last[u].pop_back();int now = last[u].back();sum[find(u)] += now - won;} else if (op == 3) {ans.push_back(sum[find(u)]);}}rev(ans);for (int it : ans) cout << it << endl;
}int main() {IOS;solve();return 0;
}

相关内容

热门资讯

陕西农信陈仓联社:深耕本土惠民... 为持续优化辖区支付服务生态,完善本地便民消费场景,切实解决商户经营收款痛点、提升群众消费支付体验,陈...
又一家公司AI优先,裁员20%... 多知5月9日消息,美国科技企业 Cloudflare 周四在2026年Q1分析师电话会议上宣布裁员 ...
钟可祥任厦门钨业董事长 天眼查App显示,近日,厦门钨业(600549)发生工商变更,黄长庚卸任法定代表人、董事长,由钟可祥...
南昌第五医院甲状腺科江辉:甲状... 请教一下,我已在一侧甲状腺切除手术后过去了半个月,如今是否可以适量食用海参、鱼、虾、蟹? 答:鉴于甲...
原创 今... 5月9日这波金价,得跟大伙唠唠,放在近15年行情里算少见,以前2011年欧债危机、2020年全球避险...
华芢生物港股上市后首份年报:暂... 3月30日,华芢生物科技(青岛)股份有限公司发布了自2025年12月登陆港交所以来的第一份年度业绩报...
侃财邦|“双豆CP”,老少皆宜... 提到手作消费,你想到的还是商场里供儿童娱乐的石膏娃娃、沙画?如今,拼豆、豆荚娃娃这对“双豆CP”,已...
中外专家热议将海南自贸港打造成... 2026年5月8日下午,由中国日报社、中国(海南)改革发展研究院联合主办的2026 RCEP区域发展...
原创 割... 现在的消费市场,总有层出不穷的新噱头,专门瞄准年轻人的钱包。你有没有发现,最近不管是写字楼的茶水间,...
阿里 京东 字节三大互联网巨头... 在数字经济深度渗透的当下,互联网企业与物流供应链的融合已成为驱动行业高质量发展的核心引擎,二者的协同...
2026年5月更新:上海高价红... 在高端消费与资产配置领域,红酒,尤其是名庄酒,早已超越了单纯的饮品范畴,成为一种具有收藏价值与**属...
2000-2023年上市公司融... 上市公司融资结构是指企业在筹集资金时,不同融资方式的构成及其比例关系。这通常涵盖内源融资与外源融资两...
苏州银行:不断调优信贷结构 争... 来源:上海证券报·中国证券网 上证报中国证券网讯 苏州银行5月8日晚间发布最新的机构调研纪要。该行今...
黄红日就任民生银行首席合规官 上证报中国证券网讯(记者 张琼斯)民生银行5月8日发布的关于首席合规官任职资格获国家金融监督管理总局...
文化和旅游部公布2026年第二...   原标题:旅游市场强制消费问题典型案例(2026年第二批)   “纠治旅游行业导游乱象、强制消费等...
7室5厅6卫,恒大原总裁豪宅被... 近日,广州市天河区清风南街11号的一套428平方米复式楼,被广州天河区人民法院在阿里法拍网挂拍,起拍...
原创 6... 俄罗斯于5月9日在莫斯科红场举行的反法西斯战争胜利81周年阅兵仪式吸引了全球的目光。这不仅仅是一场军...
庆祝5·12国际护士节系列活动... 新闻 为庆祝5·12国际护士节,我院护理部组织各专业护理骨干开展系列护理健康科普义诊活动。 庆祝护士...
合肥贵金属回收商家深度测评:资... 一、行业背景与测评方法论 据《2025年中国二手奢侈品及贵金属回收市场白皮书》数据显示,2025年全...
2026国内正规现货黄金交易平... 步入2026年第二季度,全球货币政策的转向与地缘经济的重构,使得现货黄金的避险属性再度成为财富管理的...