所需前置知识:邴茶吉


我个人觉得把所有东西写成函数会更方便
大多数简单的生成树都要写这些东西:

结构体——>给结构体写比较函数

一模一样并查集模板

重点的kruskal分为以下几步:

1.循环看始点和重点是否为同一连通块

2.否——接入

f[u]=v

3.计数并判断是否形成了最小生成树

粘一个正经描述
当然本题不可能完全是个模板,我们看题之后会发现要重复计算忽悠时间,并在输出时多算一个始点

之后看代码

#include<bits/stdc++.h>
using namespace std;
int f[100005],u,v,ans,n,m,total,t[100005];
struct xxx{//结构体部分,定义道路的始点,终点和忽悠时间…… int start,end;long long l;
}road[100005];
int find(int x){//邴茶吉模板 if(f[x]==x)return x;elsef[x]=find(f[x]);return f[x];
}
bool cmp(xxx a,xxx b){//自定义比较函数,sort要用 return a.l<b.l;
}
void kruskal(){//kruskalfor(int i=1;i<=m;i++){u=find(road[i].start);v=find(road[i].end);if(u==v)continue;//两点属于同一个连通块,直接进入下个情况 ans+=road[i].l;f[u]=v;//不在同一个连通块,就接入连通块 total++;if(total==n-1){//形成了最小生成树 break;     }}
}
int main(){cin>>n>>m;for(int i=1;i<=n;i++){f[i]=i;}for(int i=1;i<=n;i++){cin>>t[i];}for(int i=1;i<=m;i++){cin>>road[i].start>>road[i].end>>road[i].l;road[i].l=road[i].l*2+t[road[i].start]+t[road[i].end];//题中描述的道路要忽悠两遍,并加上开始和结束的点        }sort(road+1,road+1+m,cmp);kruskal();sort(t+1,t+1+n);//像我这种懒得处理的可以直接排序找出发点cout<<ans+t[1];//记得加上 return 0;
}

洛谷 P2916题解 【[USACO08NOV]Cheering up the Cow G】相关推荐

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

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

  2. 洛谷p1598题解记录

    洛谷p1598题解记录 对这道题来说,输入几行数据其实无所谓,判定时是按照是否输入EOF来决定输入是否结束的. 代码 #include <stdio.h>char numberCount[ ...

  3. 信息学奥赛一本通 1343:【例4-2】牛的旅行 | 洛谷 P1522 [USACO2.4] 牛的旅行 Cow Tours

    [题目链接] ybt 1343:[例4-2]牛的旅行 洛谷 P1522 [USACO2.4] 牛的旅行 Cow Tours [题目考点] 1. 图论 最短路径 Floyd算法 Floyd算法时间复杂度 ...

  4. 洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game

    洛谷 2953  [USACO09OPEN]牛的数字游戏Cow Digit Game 题目描述 Bessie is playing a number game against Farmer John, ...

  5. 洛谷CF982B 题解

    谢谢管理员大大给过 优先队列速通大法 hello!我又来水体了,不过嘛,相对来说这道题普及-不算水. 那我们就来研究研究吧. 先看题目 题目传送门 F1:0分暴力 一开始我也是闲的没事想要弄一下暴力做 ...

  6. P3387 【模板】缩点 洛谷 java题解 连通图+拓扑排序

    传送门: P3387 [模板]缩点 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3387 问题分析 首先为了节省 ...

  7. 洛谷P1001题解--zhengjun

    题目描述 输入两个整数 a,ba,ba,b,输出它们的和(∣a∣,∣b∣≤109|a|,|b |\le 10^9∣a∣,∣b∣≤109). 注意 PascalPascalPascal 使用intege ...

  8. 洛谷P1914题解——(本地测试AC但是交题爆零全WA)使用getchar();

    本题最大的坑在于: windows环境下的换行符为\r\n,linux环境的换行符为\n. 我们再来看看洛谷的部分OJ判题机数据和机制 常见"我在本地/xxOJ AC了.洛谷却不过" ...

  9. 洛谷·bzoj·伟大的奶牛聚集Great Cow Gather

    初见安~~这里是传送门:洛谷P2986 & bzoj P1827 题目描述 Bessie is planning the annual Great Cow Gathering for cows ...

最新文章

  1. 命名分组(?name....)
  2. 利用ES6进行Promise封装总结
  3. 怎样轻松做到SD卡照片数据恢复
  4. margin百分比,重叠和auto
  5. Data for set COM_LOCAT_ADDR may only be changed in the original system CRQ_100
  6. Vue+axios+Node+express实现文件上传(用户头像上传)
  7. 43.连接 Internet
  8. canvas画笔功能 Signature Pad
  9. linux安装fdfs
  10. 电容器原理和计算公式及电容单位换算
  11. 如何调整基准电压提高ADC精度
  12. itools 安装 ipa
  13. Mysql开启局域网连接
  14. LaTeX:使用bib插入文献
  15. JS严格模式(use strict)
  16. 2017年6月英语 CET 四六级考试查询准考证方法
  17. VMware虚拟机的使用和克隆
  18. 测试用例设计——WEB通用测试用例(转)
  19. 嵌入式学习(3)ADC、DMA、通信方式
  20. Unity 使用教程 之 Unity3D常用的知识点归纳

热门文章

  1. 计算机组成与系统结构期末复习 第二章 2.2
  2. LINUX学习之进程进阶
  3. Centos删除乱码文件或文件夹
  4. 今年48岁社保一直没有交过,现在单位要求一定要买,可是就差两年就到退休,该怎么办?
  5. 【100题】给定入栈序列,判断一个序列是否可能为输出序列
  6. Python cmd库的使用
  7. MySQL原理与学习
  8. 解析中小学生的 AI 思维学习模型
  9. L​I​N​U​X​环​境​中​部​署​J​A​V​A​项​目​步​骤
  10. 《计算机系统与维护》— CPU的主要技术指标