P2916 [USACO08NOV]安慰奶牛Cheering up the Cow
题目
P2916 [USACO08NOV]安慰奶牛Cheering up the Cow
分析
这题开始不是很懂它的意思,看了题解才懂的。举个例子:有一条边 a->b 那么假定我们从a点出发再回到a点,先从a点出发,加上a点权值和边权,再从b回到a 加上b点权值和边权,那么对于每一条边,他的边权是不是就等于边权 * 2 + 起点的边权 + 终点的边权呢?即 edge[i].w = t[edge[i].u] + t[edge[i].v] + edge[i].w * 2
AC代码
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int f[10005], t[10005];
struct Edge{int u;int v;int w;
}edge[100005];int cmp(Edge a, Edge b)
{return a.w < b.w;
}int getf(int x)
{if (f[x] == x){return x;}int fx = getf(f[x]);return f[x] = fx;
}int merge(int u, int v)
{int t1 = getf(f[u]);int t2 = getf(f[v]);if (t1 != t2){f[t1] = t2;return 1;}return 0;
}int main()
{int n, m, ans = 0x3f3f3f3f;scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++){f[i] = i;scanf("%d", &t[i]);ans = min(ans, t[i]);}for (int i = 1; i <= m; i++){int u, v, w;scanf("%d%d%d", &u, &v, &w);edge[i] = {u, v, w};edge[i].w = t[edge[i].u] + t[edge[i].v] + edge[i].w * 2;}sort(edge + 1, edge + 1 + m, cmp);int cnt = 0;for (int i = 1; i <= m; i++){if (merge(edge[i].u, edge[i].v)){ans += edge[i].w;cnt++;}if (cnt == n - 1){break;}}printf("%d\n", ans);return 0;
}
P2916 [USACO08NOV]安慰奶牛Cheering up the Cow相关推荐
- 【题解】P2916 [USACO08NOV]安慰奶牛Cheering up the Cow-C++
原题传送门 这道题用最小生成树来完成,我选用的是kruskal(克鲁斯卡尔)来完成. 这道题目在克鲁斯卡尔模板的基础上,有变动的地方只有2处: 1.因为必须从一个点出发,而最小生成树最后会让所有点都连 ...
- 安慰奶牛 问题描述 Farmer John变得非常懒,他不想再继续维
package ALGO;/*安慰奶牛 时间限制:1.0s 内存限制:256.0MB问题描述Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续 ...
- 蓝桥杯-安慰奶牛(java)
算法训练 安慰奶牛 时间限制:1.0s 内存限制:256.0MB 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为 ...
- bzoj1232[Usaco2008Nov]安慰奶牛cheer*
bzoj1232[Usaco2008Nov]安慰奶牛cheer 题意: 给出n个节点的带权图,第i个节点ci.现在你要在这个图中选出一棵树和一个起点,然后你要从起点出发到达所有的节点(不能跳点)再回到 ...
- 1232: [Usaco2008Nov]安慰奶牛cheer
1232: [Usaco2008Nov]安慰奶牛cheer Time Limit: 10 Sec Memory Limit: 162 MB Submit: 612 Solved: 431 [Sub ...
- C语言题目奶牛牧场,C语言算法训练:安慰奶牛
C语言算法训练:安慰奶牛 导语:FJ变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.下面我们来看看C语言算法训练:安慰奶牛. 每一个牧场都是一个奶 ...
- 安慰奶牛 (算法训练)
算法训练 安慰奶牛 时间限制:1.0s 内存限制:256.0MB 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧 ...
- 讲解 算法训练 安慰奶牛
首先谈谈这道题的基本思路吧,题目中谈到要将P条道路尽可能的去减少,并保证个点之间是可达的,同时要求其最小时间. 很明显的去告诉我们,用最小生成树算法. 最小生成树算法有两种, 1.克鲁斯卡尔算法 2. ...
- P2916 [USACO08NOV]Cheering up the Cow G 题解
前置知识:最小生成树算法(Kruskal/Prim) 例题 算法分析: 这一道题中给出一个无向图,求从任意一点开始经过每一点的最短路径. 既然要经过每一个点,还要求最短路径,算法就是最小生成树了. 我 ...
最新文章
- 波士顿动力机器狗化身警犬入宅执法,网友:我不想生活在《黑镜》里
- method DESCRIBE failed: 401 Unauthorized
- 多平台支持:下一步容器技术热点
- mysql修改存储引擎报错_MySQL查看修改存储引擎总结
- 音视频技术开发周刊(第128期)
- php留言板记录ip,如何用php程序记录来访IP
- Excel(16)-好学实用的Index!
- 那些年踩过的eleUl上传图片的坑?
- 设计模式之---解释器模式
- 转载:VS2005 工具方便实用的快捷键。
- Minix、UNIX、Linux的区别与联系
- 通达信板块监控指标_通达信板块分析指标公式
- 白话区块链~Pow,PoS,DPos
- python 前后端分离框架_聊聊前后端分离的架构方法
- 在线FLV播放器实现方法
- 【BP数据预测】基于matlab天牛须算法优化BP神经网络数据预测【含Matlab源码 1316期】
- 解决WPS每点击一下保存,就会出现tmp文件
- java人民币美元转换_人民币与美元的汇率转换 ------Java实现
- ruoyi vue 其功能介绍
- 用 gcc生成静态库和动态库以及静态库和动态库的使用