先考虑边的代价,容易发现每一条边都需要走两次,也就是2*边权
再考虑点的代价,由于上面的结论,那么就是度数*点权
然后就可以构造新的边权为2*原边权+连接点的点权,然后求最小生成树即可
注意根还有一个点权,所以再加上根(也就是最小点)的点权即可

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 10005
4 struct ji{
5 int x,y,z;
6 }e[N*10];
7 int n,m,ans,a[N],f[N];
8 bool cmp(ji x,ji y){
9 return x.z<y.z;
10 }
11 int find(int k){
12 if (k==f[k])return k;
13 return f[k]=find(f[k]);
14 }
15 int main(){
16 scanf("%d%d",&n,&m);
17 for(int i=1;i<=n;i++)scanf("%d",&a[i]);
18 ans=a[1];
19 for(int i=2;i<=n;i++)ans=min(ans,a[i]);
20 for(int i=1;i<=m;i++){
21 scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].z);
22 e[i].z=2*e[i].z+a[e[i].x]+a[e[i].y];
23 }
24 sort(e+1,e+m+1,cmp);
25 for(int i=1;i<=n;i++)f[i]=i;
26 for(int i=1;i<=m;i++)
27 if (find(e[i].x)!=find(e[i].y)){
28 f[find(e[i].x)]=find(e[i].y);
29 ans+=e[i].z;
30 }
31 printf("%d",ans);
32 }

[bzoj1232]安慰奶牛的更多相关文章

  1. [bzoj1232][Usaco2008Nov]安慰奶牛cheer_Kruskal

    安慰奶牛 cheer bzoj-1232 Usaco-2008 Nov 题目大意:给定一个n个点,m条边的无向图,点有点权,边有边权.FJ从一个点出发,每经过一个点就加上该点点权,每经历一条边就加上该 ...

  2. BZOJ1232: [Usaco2008Nov]安慰奶牛cheer

    1232: [Usaco2008Nov]安慰奶牛cheer Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 578  Solved: 403[Submi ...

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

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

  4. 算法笔记_067:蓝桥杯练习 算法训练 安慰奶牛(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是 ...

  5. 【bzoj1232】[Usaco2008Nov]安慰奶牛cheer(最小生成树)

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1232 这道题要保留的道路肯定是原图的一棵生成树,因为要保留n-1条边,且使删边后的图连 ...

  6. 【最小生成树】Bzoj1232 [Usaco2008Nov]安慰奶牛cheer

    Description Farmer John变得非常懒, 他不想再继续维护供奶牛之间供通行的道路. 道路被用来连接N (5 <= N <= 10,000)个牧场, 牧场被连续地编号为1. ...

  7. 【bzoj1232】[Usaco2008Nov]安慰奶牛cheer

    问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是一个奶牛的家.FJ计划除去P条道路中尽可能多的道路, ...

  8. [BZOJ1232][[Usaco2008Nov]安慰奶牛cheer(MST)

    题目:http://hzwer.com/2493.html 分析:对于每条边,贡献的价值是这条边的边权加上这条边连接的两点的权值,所以可以把每条边的边权加上两顶点的点权作为新的边权,然后跑个最小生成树 ...

  9. BZOJ1232: [Usaco2008Nov]安慰奶牛cheer(最小生成树)

    题意:给一个图 需要找到一个子图使得所有点都连通 然后再选择一个点做为起点 走到每个点并回到起点 每条边,每个点被经过一次就要花费一次边权.点权 题解:肯定是找一颗最小生成树嘛 然后惊奇的发现 任意选 ...

随机推荐

  1. python3 拼接字符串方法

    python3.x拼接字符串一般有以下几种方法: 1. 直接通过(+)操作符拼接 1 2 s = 'Hello'+' '+'World'+'!' print(s) 输出结果:Hello World! ...

  2. t-SNE 从入门到放弃

    t-SNE 算法 1 前言 t-SNE 即 t-distributed stochastic neighbor embedding 是一种用于降维的机器学习算法,在 2008 年由 Laurens v ...

  3. 从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境

    作者 | 存诚 阿里云弹性计算团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文章 ...

  4. 题解 Christmas Game

    题目传送门 题目大意 给出 \(t\) 个 \(n\) 个点 \(m\) 条边的无向图,每次可以从任意一棵树选择一条边删掉,然后该树不与根(为 \(1\) )联通的部分被删掉.不能操作的人输.问谁有必 ...

  5. 全网详细JAVA知识点干货学习路线目录,值得收藏学习!

    1.Java简介及开发环境配置 2.Java中的注释&关键字&常量&变量&标识符 3.Java中的基本数据类型及其类型转换 4.Java中的运算符及表达式 5.Java ...

  6. 「软件测试实战教程系列(三)」弃繁就简,接口测试神器Postman|收藏版

    软件测试实战教程系列(三)弃繁就简,接口测试神器Postman|收藏版 Postman主要帮我们干了三件事: 1.把相关集合放到一个集合当中方便管理. 2.对指定接口发送请求. 3.断言 下面我们使用 ...

  7. Python 做简单的登录系统

    案例 之 登录系统原创作品1 该随笔 仅插入部分代码:全部py文件源代码请从百度网盘自行下载! 链接:https://pan.baidu.com/s/1_sTcDvs5XEGDcnpoQEIrMg 提 ...

  8. 代码混淆保安全「GitHub 热点速览 v.21.43」

    作者:HelloGitHub-小鱼干 虽然让代码难以阅读看似是件难以理解的事情,但是混淆后的代码起到了类似加密的作用,而且经过混淆的代码依旧能实现原代码的功能.javascript-obfuscato ...

  9. Bubble和BubbleButton气泡框

    from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.lang.builder import Buil ...

  10. [no code][scrum meeting] Beta 12

    $( "#cnblogs_post_body" ).catalog() 例会时间:5月27日11:30,主持者:乔玺华 一.工作汇报 人员 昨日完成任务 明日要完成的任务 乔玺华 ...