比赛 26暑假集训模拟赛3 评测结果 AAAAAAAAAAATTTTTTTTA
题目名称 城市建设 最终得分 60
用户昵称 VTXE 运行时间 46.536 s
代码语言 C++ 内存使用 4.48 MiB
提交时间 2026-07-06 12:59:12
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long

struct node{
	ll u,v;
	ll w;
}e[51000],t[51000];

ll n,m,q;
ll f[21000];

ll find(ll x){
	return f[x]==x?x:f[x]=find(f[x]);
}

bool cmp(node a,node b){
	return a.w<b.w;
}

int main(){
    freopen("hnoi2010_city.in","r",stdin);
    freopen("hnoi2010_city.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
    cin>>n>>m>>q;
	for (int i=1;i<=m;i++){
        cin>>e[i].u>>e[i].v>>e[i].w;
    }
	while (q--){
        ll k,cnt=0;
        ll d,ans=0;
		cin>>k>>d;
		e[k].w=d;
		for (int i=1;i<=m;i++)t[i]=e[i];
		sort(t+1,t+m+1,cmp);
		for (int i=1;i<=n;i++)f[i]=i;
		for (int i=1;i<=m;i++){
			ll u=find(t[i].u),v=find(t[i].v);
			if (u!=v){
				f[u]=v;
				ans+=t[i].w;
				if (++cnt==n-1)break;
			}
		}
		cout<<ans<<"\n";
	}
	return 0;
}