| 比赛 |
26暑假集训模拟赛3 |
评测结果 |
AAAAAAAAAAATTTTTTTTA |
| 题目名称 |
城市建设 |
最终得分 |
60 |
| 用户昵称 |
exil |
运行时间 |
46.563 s |
| 代码语言 |
C++ |
内存使用 |
4.48 MiB |
| 提交时间 |
2026-07-06 10:37:31 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node{
int l,r,v;
};
node xu[50005];
node bian[50005];
int fa[20005];
bool cmp(node a,node b){
return a.v<b.v;
}
int find(int x){
if(fa[x]!=x)fa[x]=find(fa[x]);
return fa[x];
}
signed main(){
freopen("hnoi2010_city.in","r",stdin);
freopen("hnoi2010_city.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,m,q;
cin>>n>>m>>q;
for(int i = 1;i<=m;i++){
cin>>xu[i].l>>xu[i].r>>xu[i].v;
}
//sort(xu+1,xu+1+m,cmp);
for(int j = 1;j<=q;j++){
int l,r;
cin>>l>>r;
xu[l].v=r;
for(int i = 1;i<=n;i++)fa[i]=i;
for(int i = 1;i<=m;i++)bian[i].l=xu[i].l,bian[i].r=xu[i].r,bian[i].v=xu[i].v;
sort(bian+1,bian+1+m,cmp);
int bbian=0,ans=0;
for(int i = 1;i<=m;i++){
int ll=find(bian[i].l),rr=find(bian[i].r);
if(ll==rr)continue;
ans+=bian[i].v;
fa[rr]=ll;
bbian++;
if(bbian==n-1)break;
}
cout<<ans<<endl;
}
return 0;
}