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