P1194 买礼物
P1194 买礼物
普及的题目,而且一眼就能看出该用什么做法。
我主要是决定这道题建图的思想值得借鉴,每样东西原本的价格是a,所以新建一个节点0, 0向i连边,边权为a,这样一共就有b + 1个点,跑kruskal的时候记录加入的边数,=b时就break。
#include <bits/stdc++.h> using namespace std; int a, b, fa[510], cnt; struct edge { int u, v, w; bool operator < (const edge &a) const { return w < a.w; } }e[250100]; int getfa(int x) {return fa[x] == x ? x : fa[x] = getfa(fa[x]);} int main() { cin >> a >> b; cnt = 0; for (int i = 0; i <= b; i ++) fa[i] = i; for (int i = 1; i <= b; i ++) { e[++ cnt] = (edge) {0, i, a}; for (int j = 1; j <= b; j ++) { int x; cin >> x; if (i < j && x != 0) e[++ cnt] = (edge) {i, j, x}; } } int t = 0, ans = 0; sort(e + 1, e + cnt + 1); for (int i = 1; i <= cnt; i ++) { int x = e[i].u, y = e[i].v, z = e[i].w; int fx = getfa(x), fy = getfa(y); if (fx != fy) { fa[fx] = fy; t ++; ans += z; } if (t == b) break; } printf("%d\n", ans); return 0; }
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现