解题报告:

求经过所有节点所花费的最小代价.

考虑最小生成树求解.

来看一下题目:

1.当他走访完所有的奶牛之后,还要回到他的出发地.

2.注意约翰在出发和回去的时候,都要和出发地的奶牛谈一次话.

先看一下这一句:

注意约翰在出发和回去的时候,都要和出发地的奶牛谈一次话.

那么是不是就是每条边都是被遍历两次呢 并且每一次计算的时候都要加上起点的权值

举个例子说明一下:

有一条边 a->b 那么假定我们从a点出发再回到a点 先从a点出发 加上a点权值和边权 在从b回到a 加上b点权值和边权 那么对于每一条边 他的边权是不是就等于边权$*2$+起点的终点的边权呢?

那么我们就把每一条边的边权更新一下

    a[i].z=z*2+t[x]+t[y]; 

再来注意一下另外一句话:

当他走访完所有的奶牛之后,还要回到他的出发地.

代表着我们还要加上出发点的权值 对于一个给定的图 它的最小生成树的是一定的 那么我们只要加上最小的出发点即可

代码如下:

#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,z,ans=0x3f,px,py,f[100005],t[100005];
struct p{int x,y,z;
}a[200005];
bool cmp(p a,p b){return a.z<b.z;
}
int find(int x){if (x==f[x]) return x;return f[x]=find(f[x]);
}
int main(){scanf("%d%d",&n,&m);for (int i=1;i<=n;i++) f[i]=i;for (int i=1;i<=n;i++) {scanf("%d",&t[i]);ans=min(ans,t[i]);}for (int i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&z);a[i].x=x;a[i].y=y;a[i].z=z*2+t[x]+t[y]; }sort(a+1,a+m+1,cmp);for (int i=1;i<=m;i++){px=find(a[i].x);py=find(a[i].y);if (px==py) continue;f[px]=py;ans+=a[i].z;}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/Hiraeth-dh/p/10693407.html

题解 P2916 【[USACO08NOV]安慰奶牛Cheering up the Cow】相关推荐

  1. P2916 [USACO08NOV]安慰奶牛Cheering up the Cow

    题目 P2916 [USACO08NOV]安慰奶牛Cheering up the Cow 分析 这题开始不是很懂它的意思,看了题解才懂的.举个例子:有一条边 a->b 那么假定我们从a点出发再回 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Spring-JdbcTemplate基本使用
  2. 把c++语言转换为go的工具_V,新编程语言来袭!与Go类似,跟C一样快
  3. webService学习6:解析组件 's:schema' 时出错。在该组件中检测到 's:schem
  4. Android学习笔记---监听ContentProvider(内容共享者)中数据的变化
  5. AcWing基础算法课Level-2 第五讲 动态规划
  6. .html() 与.text() 获取值、取值 区别
  7. nginx root与alias区别
  8. 可能最详细的教程,新手如何获取Zcash钱包(ZEC钱包)官方客户端地址的方法
  9. 红警2的经验和秘籍及不是秘笈的秘笈(4)
  10. Xcode5 symbolicatecrash文件路径
  11. Flink SQL Client初探
  12. 计算机itunes无法安装,Win7电脑无法安装itunes怎么办 win7安装itunes失败的解决方法...
  13. 零线断了为什么会带电, 使验电笔氖管发光
  14. 交换机接口的三种模式
  15. 针对复杂问题的知识图谱问答最新进展
  16. Personalized Web Search总结
  17. 计算机台式机硬盘,台式电脑硬盘和笔记本硬盘有什么区别【详解】
  18. 容器 服务:metrics-server 安装探索
  19. Xilinx 7A 开发流程——工程模式 ARTY XC7A35T
  20. 交叉编译ffmpeg:aac x264 x265

热门文章

  1. linux单引号作用,单引号 双引号如何输入(Linux运维:单引号与双引号的使用)...
  2. 港科夜闻丨香港科大教授权龙:三维重建才是计算机视觉的灵魂
  3. SQLI-LABS——Page-2 Advanced Injections Less21~Less37
  4. 开发一个类似于 xxx 的应用有多难?
  5. tail关键字查询日志
  6. 【Excle】在方框内打勾
  7. 查看计算机真实用户名(username)
  8. 计算机用户名怎么注册,微软账号怎么注册 Microsoft帐户注册使用教程
  9. 组织能力:企业成败的关键(组织能力杨三角系列一)
  10. 远程服务器显示登录密码,远程服务器怎么知道登录密码