思路
此题的解题办法就是使用并查集,因为对于查询我们需要快速找到某个城市对应的城市圈的繁荣度,对于城市圈我们可以用并查集来代替,对城市圈中的每一个城市我们都将其放在同一个并查集中,但是对于城市圈的构建与查询我们需要离线来处理,以方便根据时间的大小来同步构建城市圈以及实时的城市查询,比较考验代码基础
代码
c++
#include <iostream>
#include <vector>
#include <algorithm>
P2024.第3题-城市人口
题目内容
现在有一些城市,政府希望建设高铁形成城市圈,让城市更加繁荣。
具体地,(ti,Si) 表示在 ti 时刻,建设高铁把集合 Si 中的城市连接起来,形成一个城市圈。每个城市圈的繁荣度是其中所有城市的人口总和。
现在请你回答不同时刻,某个城市所在城市圈的繁荣度
输入描述
第一行: n,m,q 分别表示城市个数、建立高铁站次数和查询次数
第二行: a1,⋯,an 表示每个城市人口总数
接下来 m 行的第 i 行: ti 表示建立高铁站的时间, ci 表示高铁站连接的城市个数,后面 ci 个数代表对应的城市编号;
接下来 q 行的第 i 行,每行两个数,ti 表示询问时间,c 表示询问的城市。
如果一个时刻既有修高铁,又有询问,先执行修改,再输出询问结果。
输出描述
输出 q 行,每行输出对应询问中,对应城市所在城市圈的繁荣度。
样例1
输入
5 3 3
1 2 3 4 5
1 2 1 3
3 2 2 5
6 2 3 4
1 1
7 3
5 2
输出
4
8
7
样例2
输入
输出