| 比赛 |
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;
}