比赛 26暑假集训模拟赛3 评测结果 AAAAAAAAAAAEEEEEEEEA
题目名称 城市建设 最终得分 60
用户昵称 王潇翊 运行时间 5.333 s
代码语言 C++ 内存使用 3.61 MiB
提交时间 2026-07-06 12:42:52
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
struct E
{
    int u,v,w;
}e[6005],t[6005];
int fa[1005];
int n,m,q;
int find(int x)
{
    if(fa[x] != x)
	{
		fa[x] = find(fa[x]);
	} 
    return fa[x];
}
bool cmp(E a,E b)
{
    return a.w < b.w;
}
long long c()
{
    for(int i = 1;i <= n;i++)
	{
		fa[i] = i;
	} 
    sort(t,t + m,cmp);
    long long sum = 0;
    int num = 0;
    for(int i = 0;i < m;i++)
    {
        int x = find(t[i].u),y = find(t[i].v);
        if(x != y)
        {
            fa[x] = y;
            sum += t[i].w;
            num++;
            if(num == n - 1)
			{
				break;
			} 
        }
    }
    return sum;
}
int main()
{
	freopen("hnoi2010_city.in","r",stdin);
	freopen("hnoi2010_city.out","w",stdout);
    cin >> n >> m >> q;
    for(int i=0;i<m;i++)
	{
		cin >> e[i].u >> e[i].v >> e[i].w;
	} 
    while(q--)
    {
        int k,d;
        cin >> k >> d;
        e[k - 1].w = d;
        for(int i = 0;i < m;i++)
		{
			t[i] = e[i];
		} 
        cout << c() << endl;
    }
    return 0;
}