SP15650 ULM09 - Dark roads
题意
给定若干个
多组数据,以
对于每一组测试输出对应答案。
解法
最小生成树板子,使用 Kruskal 或者 Prim 求解即可。这里使用的是 Kruskal。
代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define int long long
const int N = 1e7 + 5;
struct Node
{
int u, v, w;
bool operator <(const Node& t)const
{
return w < t.w;
}
};
Node a[N];
int p[N], n, m, sum = 0;
int find(int x)
{
if (p[x] == x) return x;
return p[x] = find(p[x]);
}
void join(int a, int b)
{
p[find(a)] = find(b);
}
void kruskal()
{
sort(a + 1, a + m + 1);
for (int i = 1; i <= n; i++) p[i] = i;
int cnt = 0, ans = 0;
for (int i = 1; i <= m && cnt < n - 1; i++)
{
if (find(a[i].u) == find(a[i].v)) continue;
join(a[i].u, a[i].v);
cnt++;
ans += a[i].w;
}
printf("%lld\n", sum - ans);
}
signed main()
{
while (scanf("%lld %lld", &n, &m))
{
if (n == 0 && m == 0) break;
sum = 0;
for (int i = 1; i <= m; i++)
{
scanf("%lld %lld %lld", &a[i].u, &a[i].v, &a[i].w);
sum += a[i].w;
}
kruskal();
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具