题目

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相关推荐

  1. 【题解】P2916 [USACO08NOV]安慰奶牛Cheering up the Cow-C++

    原题传送门 这道题用最小生成树来完成,我选用的是kruskal(克鲁斯卡尔)来完成. 这道题目在克鲁斯卡尔模板的基础上,有变动的地方只有2处: 1.因为必须从一个点出发,而最小生成树最后会让所有点都连 ...

  2. 安慰奶牛 问题描述 Farmer John变得非常懒,他不想再继续维

    package ALGO;/*安慰奶牛 时间限制:1.0s 内存限制:256.0MB问题描述Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续 ...

  3. 蓝桥杯-安慰奶牛(java)

    算法训练 安慰奶牛   时间限制:1.0s   内存限制:256.0MB 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为 ...

  4. bzoj1232[Usaco2008Nov]安慰奶牛cheer*

    bzoj1232[Usaco2008Nov]安慰奶牛cheer 题意: 给出n个节点的带权图,第i个节点ci.现在你要在这个图中选出一棵树和一个起点,然后你要从起点出发到达所有的节点(不能跳点)再回到 ...

  5. 1232: [Usaco2008Nov]安慰奶牛cheer

    1232: [Usaco2008Nov]安慰奶牛cheer Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 612  Solved: 431 [Sub ...

  6. C语言题目奶牛牧场,C语言算法训练:安慰奶牛

    C语言算法训练:安慰奶牛 导语:FJ变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.下面我们来看看C语言算法训练:安慰奶牛. 每一个牧场都是一个奶 ...

  7. 安慰奶牛 (算法训练)

    算法训练 安慰奶牛   时间限制:1.0s   内存限制:256.0MB        问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧 ...

  8. 讲解 算法训练 安慰奶牛

    首先谈谈这道题的基本思路吧,题目中谈到要将P条道路尽可能的去减少,并保证个点之间是可达的,同时要求其最小时间. 很明显的去告诉我们,用最小生成树算法. 最小生成树算法有两种, 1.克鲁斯卡尔算法 2. ...

  9. P2916 [USACO08NOV]Cheering up the Cow G 题解

    前置知识:最小生成树算法(Kruskal/Prim) 例题 算法分析: 这一道题中给出一个无向图,求从任意一点开始经过每一点的最短路径. 既然要经过每一个点,还要求最短路径,算法就是最小生成树了. 我 ...

最新文章

  1. 波士顿动力机器狗化身警犬入宅执法,网友:我不想生活在《黑镜》里
  2. method DESCRIBE failed: 401 Unauthorized
  3. 多平台支持:下一步容器技术热点
  4. mysql修改存储引擎报错_MySQL查看修改存储引擎总结
  5. 音视频技术开发周刊(第128期)
  6. php留言板记录ip,如何用php程序记录来访IP
  7. Excel(16)-好学实用的Index!
  8. 那些年踩过的eleUl上传图片的坑?
  9. 设计模式之---解释器模式
  10. 转载:VS2005 工具方便实用的快捷键。
  11. Minix、UNIX、Linux的区别与联系
  12. 通达信板块监控指标_通达信板块分析指标公式
  13. 白话区块链~Pow,PoS,DPos
  14. python 前后端分离框架_聊聊前后端分离的架构方法
  15. 在线FLV播放器实现方法
  16. 【BP数据预测】基于matlab天牛须算法优化BP神经网络数据预测【含Matlab源码 1316期】
  17. 解决WPS每点击一下保存,就会出现tmp文件
  18. java人民币美元转换_人民币与美元的汇率转换 ------Java实现
  19. ruoyi vue 其功能介绍
  20. 用 gcc生成静态库和动态库以及静态库和动态库的使用

热门文章

  1. 计算机中汉字的顺序用什么牌,中国汉字的写做顺序,你知道吗?
  2. c#FileStream文件读写可能会出现乱码
  3. 程序员年近三十,如何抉择,我打个样!
  4. 亨登谈判策略(转载)
  5. [转载]寻 找 石 泉
  6. 路由器上网流程以及nat内网ip
  7. Can‘t connect to MySQL server on ‘localhost‘ (10061)
  8. IPv6地址自动配置
  9. mysql中的浮点数和定点数
  10. intel 新一代集成显卡