标签:并查集,最小生成树

tips:bzoj这题为权限题,可以去洛谷2916提交

Description

Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N (5 <= N <=10,000)个牧场,牧场被连续地编号为1..N.每一个牧场都是一个奶牛的家. FJ计划除去P(N-1 <= P <=100,000)条道路中尽可能多的道路,但是还要保持牧场之间的连通性.你首先要决定那些道路是需要保留的N-1条道路.第j条双向道路连接了牧场S_j和E_j (1 <= S_j <= N; 1<= E_j <= N; S_j != E_j), 而且走完它需要L_j (0 <= L_j<= 1,000)的时间.没有两个牧场是被一条以上的道路所连接.奶牛们非常伤心,因为她们的交通系统被削减了.你需要到每一个奶牛的住处去安慰她们.每次你到达第i个牧场的时候(即使你已经到过),你必须花去C_i (1 <= C_i<= 1,000)的时间和奶牛交谈.你每个晚上都会在同一个牧场(这是供你选择的)过夜,直到奶牛们都从悲伤中缓过神来.在早上起来和晚上回去睡觉的时候,你都需要和在你睡觉的牧场的奶牛交谈一次.这样你才能完成你的交谈任务.假设Farmer John采纳了你的建议,请计算出使所有奶牛都被安慰的最少时间.对于你前10次的提交,你的程序会在一部分正式的测试数据上运行,并且返回运行的结果.

Input

*第 1行: 用空格隔开的两个整数N和P *第 2..N+1 行: 第i+1行包含了一个整数: C_i *第 N+2..N+P+1行:第 N+j+1行包含用空格隔开的三个整数: S_j, E_j和 L_j

Output

第 1行:一个整数,所需要的总时间(包含和在你所在的牧场的奶牛的两次谈话时间).

Sample Input

5 7
10
10
20
6
30
1 2 5
2 3 5
2 4 12
3 4 17
2 5 15
3 5 6
4 5 12

Sample Output

176

HINT

分析:每个边权为原本的边权w*2+两个端点的点权

之后直接裸的最小生成树模板题

Code

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define dep(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
const int maxn=10010,maxm=100010;
struct edge{int u,v,w;}e[maxm];
int fa[maxn],n,m,c[maxn],ans=1e9,u,v,w,sum=0;
inline int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
inline int cmp(edge x,edge y){return x.w<y.w;}
int main()
{scanf("%d%d",&n,&m);rep(i,1,n){scanf("%d",&c[i]);ans=min(ans,c[i]);fa[i]=i;}rep(i,1,m){scanf("%d%d%d",&u,&v,&w);w=(w<<1)+c[u]+c[v];e[i]=(edge){u,v,w};}sort(e+1,e+m+1,cmp);rep(i,1,m){int root1=find(e[i].u),root2=find(e[i].v);if(root1!=root2){fa[root1]=root2;sum++;ans+=e[i].w;}if(sum==n-1)break;}printf("%d\n",ans);return 0;
}

BZOJ1232 安慰奶牛cheer (洛谷2916)相关推荐

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

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

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

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

  3. bzoj 1232: [Usaco2008Nov]安慰奶牛cheer【最小生成树】

    有趣 每条边在算答案的时候被算了二倍的边权值加上两个端点的权值,然后睡觉点额外加一次 所以可以用这个权做MST,然后加上点权最小的点 #include<iostream> #include ...

  4. BZOJ 1232 USACO 2008 Nov. 安慰奶牛Cheer

    [题解] 对于每一条边,我们通过它需要花费的代价是边权的两倍加上这条边两个端点的点权. 我们把每条边的边权设为上述的值,然后跑一边最小生成树,再把答案加上最小的点权就好了. 1 #include< ...

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

    思路:看出跟dfs的顺序有关就很好写了, 对于一棵树来说确定了起点那么访问点的顺序就是dfs序,每个点经过 其度数遍,每条边经过2边, 那么我们将边的权值×2加上两端点的权值跑最小生成树,最后加上一个 ...

  6. [洛谷P2124] 奶牛美容

    洛谷题目链接:奶牛美容 题目描述 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 6 16 ................ ..XXXX....XXX... ...XXXX... ...

  7. 洛谷1345 [Usaco5.4]奶牛的电信

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  8. 洛谷P1868 饥饿的奶牛 题解

    洛谷P1868 饥饿的奶牛 题解 题目链接:P1868 饥饿的奶牛 题意: 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有 NNN 个区间,每个区 ...

  9. 奶牛的耳语c语言,洛谷P1296 奶牛的耳语

    题目描述 在你的养牛场,所有的奶牛都养在一排呈直线的牛栏中.一共有 n 头奶牛,其中第 i 头牛在直线上所处的位置可以用一个整数坐标 pi​(0≤pi​≤10^8) 来表示.在无聊的日子里,奶牛们常常 ...

最新文章

  1. python使用fpdf生成发票格式的pdf文件包含:文字、图片logo、表格、条形码等;
  2. SAP Business One 产品功能综述
  3. 总结C#中窗体间传递数据的几种方法
  4. K-means聚类算法详解
  5. resnet结构_经典卷积网络(二)-ResNet
  6. PyCharm:ModuleNotFoundError: No module named 'selenium'
  7. Linux学习笔记十三——文件压缩、解压缩和归档
  8. python中怎么比较两个列表的大小_python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法...
  9. yii mysql in,在Yii中从MySQL获取最后插入的ID
  10. IBM X60/X61无光驱安装XP
  11. 关于vertical layout不能水平居中对齐的原因
  12. 企业应用开发(1)--软件学院OJ系统需求分析与原型图设计
  13. Android的Jetpack概括
  14. php做资源嗅探器,php做的端口嗅探器–可以指定网站和端口_php技巧
  15. 大学排行榜 : qs全球世界 大学排行榜
  16. Tensor for argument #2 ‘mat1‘ is on CPU, but expected it to be on GPU (while checking arguments for
  17. asp.net报表制作视频教程
  18. 搭建百万级别邮件发送平台
  19. This is probably not a problem with npm. There is likely additional logging 报错
  20. 突破软件测试的瓶颈(上)

热门文章

  1. 解决文字与图片始终不并排的问题
  2. 腾讯云CVM使用体验
  3. 悦然插件资源分享:WooCommerce Order Details订单详情插件
  4. JAVA的多线程、死锁、线程间通信、如何规避死锁、线程安全的单例模式
  5. 树莓派存储方案_还在用笨重的NAS存储服务器?你可以自己动手用树莓派DIY一个...
  6. Fast and Accurate Extrinsic Calibration for Multiple LiDARs and Cameras
  7. 移动端音视频从零到上手(推荐)
  8. 中联软通企业短信中心 瑞星杀毒软件升级包
  9. 店铺管理系统项目总结
  10. 夜访阿里总部:实拍双11背后神秘的程序员!