P2916 [USACO08NOV]Cheering up the Cow G 题解
前置知识:最小生成树算法(Kruskal/Prim)
例题
算法分析:
这一道题中给出一个无向图,求从任意一点开始经过每一点的最短路径。
既然要经过每一个点,还要求最短路径,算法就是最小生成树了。
我用的是 Kruskal 算法。
有一点需要注意:每条路的长度需要如何计算?
约翰需要经过每一条道路两次,并且每走一次,就需要安慰这条路后的奶牛,所以路径长度=道路长度*2+安慰两头奶牛时间
代码如下:(因为几乎是 Kruskal 模板,所以没有注释)
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
struct node
{LL x,y,dis;
}a[100000+10];
LL n,p,c[10000+10],fa[10000+10],t,ans;
bool cmp(node fir,node sec)
{return fir.dis<sec.dis;
}
LL gf(LL x)
{if(fa[x]==x) return x;return fa[x]=gf(fa[x]);
}
int main()
{scanf("%lld%lld",&n,&p);for(int i=1;i<=n;i++) scanf("%lld",&c[i]);for(int i=1;i<=p;i++){scanf("%lld%lld%lld",&a[i].x,&a[i].y,&a[i].dis);a[i].dis=a[i].dis*2+c[a[i].x]+c[a[i].y];}for(int i=1;i<=n;i++) fa[i]=i;sort(a+1,a+p+1,cmp);for(int i=1;t<n-1;i++){int fx=gf(a[i].x);int fy=gf(a[i].y);if(fx!=fy){fa[fx]=fy;ans+=a[i].dis;t++;}}sort(c+1,c+n+1);printf("%lld\n",ans+c[1]);return 0;
}
P2916 [USACO08NOV]Cheering up the Cow G 题解相关推荐
- 洛谷 P2916题解 【[USACO08NOV]Cheering up the Cow G】
所需前置知识:邴茶吉 我个人觉得把所有东西写成函数会更方便 大多数简单的生成树都要写这些东西: 建结构体-->给结构体写比较函数 一模一样的并查集模板 重点的kruskal分为以下几步: 1.循 ...
- P2916 [USACO08NOV]安慰奶牛Cheering up the Cow
题目 P2916 [USACO08NOV]安慰奶牛Cheering up the Cow 分析 这题开始不是很懂它的意思,看了题解才懂的.举个例子:有一条边 a->b 那么假定我们从a点出发再回 ...
- 洛谷P2851 [USACO06DEC]The Fewest Coins G 题解
洛谷P2851 [USACO06DEC]The Fewest Coins G 题解 题目链接:P2851 [USACO06DEC]The Fewest Coins G 题意: Farmer John ...
- 洛谷P4084 [USACO17DEC]Barn Painting G 题解
洛谷P4084 [USACO17DEC]Barn Painting G 题解 题目链接:P4084 [USACO17DEC]Barn Painting G 题意:题意:给定一颗N个节点组成的树,3种颜 ...
- 【题解】P2916 [USACO08NOV]安慰奶牛Cheering up the Cow-C++
原题传送门 这道题用最小生成树来完成,我选用的是kruskal(克鲁斯卡尔)来完成. 这道题目在克鲁斯卡尔模板的基础上,有变动的地方只有2处: 1.因为必须从一个点出发,而最小生成树最后会让所有点都连 ...
- 洛谷——P2916 [USACO08NOV]为母牛欢呼Cheering up the Cows
https://www.luogu.org/problem/show?pid=2916 题目描述 Farmer John has grown so lazy that he no longer wan ...
- AtCoder Beginner Contest 252 A~G 题解
前言 这是我第一次写7题(A~G)的ABC题解,若有写得不好或者不到位的地方请多多指教,我将万分感激,感谢大家的支持! ABC252 A~G [A - ASCII code](https://atco ...
- AtCoder Beginner Contest 217 A B C D E G 题解
第一次6题纪念第一次6题纪念第一次6题纪念 A - Lexicographic Order 题意: s字符串的字典序是否小于ts字符串的字典序是否小于ts字符串的字典序是否小于t 思路: 模拟模拟模拟 ...
- 2020 GDUT Rating Contest I (Div. 2) A - Cow Gymnastics 题解
好吧--是时候补一下题解了 原题 题目大意 给出n只牛,k次排序,如果有一只牛一直比另外一只牛更前算作一对,输出一共有多少对. 题目分析 水题(数据规模小),一开始初始化全部都可以,然后一个个删去就行 ...
最新文章
- cli3 px转rem适配移动端_Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
- 2021 CSDN年度回忆录
- Linux系统文件I/O编程(一)---open()等基本函数
- 兰山天书(贺兰山岩画)
- [故障引起的故事]URL中带加号(+)的处理
- Linux学习之系统编程篇:利用 setitimer 实现 alarm练习
- Java学习进度(2013.03.13)—Struts2学习一
- window.open怎么设置title_企业seo怎么优化 都有那些策略?
- for 循环新的写法==列表解析
- matlab 梯度下降 求偏导,通过计算图求梯度下降中各偏导的推导
- 下载Youtube单个视频和播放列表的方法详细教程
- matlab的omega0是什么,ABO设定中,A具体是怎么标记O的?
- 一看就停不下来的中国史
- AVL树(动图详解)
- 信息学奥赛一本通:1084:幂的末尾
- 按降序显示奇数python_程序在Python中分别以升序和降序对所有偶数和奇数进行排序...
- 使用protractor操作页面元素
- 收藏的网页--视频教程
- 配置公共字段全局填充createTime和updateTime
- 基于canal根据配置实现数据库数据的同步
热门文章
- 细胞亚器文献阅读二~An ER-Mitochondria Tethering Complex Revealed by a Synthetic Biology Screen
- 怎么做微信小程序?做微信小程序的步骤
- jira -workflow之父级任务关注人copy到子任务
- 【Unity Shader】 CubeMap(立方体贴图)
- 关于屏保设置不生效时要了解的几个小技巧!
- Oracle 实现小计、合计
- 博客园添加目录,导航,回到顶部
- android正反面切换,普通安卓手机数据线可以正反插吗?你一定猜错了
- linux中pe中文名称,原来如此,Linux系统也有PE,不过它叫...
- 【软件测试】软件测试随手记