tyvj1659中中救援队
题目:http://www.joyoi.cn/problem/tyvj-1659
发现每条边要走两次,每个点要走它连接的边数次。
所以把边的权值赋成 本身的值+两个端点的点权,求最小生成树即可。
!边权其实是 本身的值*2+两个端点的点权;
别忘了起点要多加一次,所以找一个点权最小的加上即可。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,a[],fa[],x,y,tmp;
long long ans=;
struct Edge{
int x,y,w;
Edge(int x=,int y=,int w=):x(x),y(y),w(w) {}
}edge[];
bool cmp(Edge x,Edge y){return x.w<y.w;}
int find(int a)
{
if(fa[a]==a)return a;
return fa[a]=find(fa[a]);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d",&a[i]),fa[i]=i,ans=min(ans,(long long)a[i]);
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&tmp);
edge[i]=Edge(x,y,a[x]+a[y]+tmp+tmp);
}
sort(edge+,edge+m+,cmp);
for(int i=;i<=m;i++)
{
int u=edge[i].x,v=edge[i].y;
if(find(u)!=find(v))
{
// printf("u=%d v=%d plu=%d\n",u,v,edge[i].w);
fa[fa[u]]=fa[v];ans+=edge[i].w;
}
}
printf("%lld",ans);
return ;
}
tyvj1659中中救援队的更多相关文章
- 全栈开发工程师微信小程序-中(中)
全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...
- SpringBoot Web项目中中如何使用Junit
Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性. 凭本人的感觉和经验来说,在项目中完全按标准都写Junit用例覆盖大部分业务代码的,应该不会超过一半. ...
- How do I duplicate a resource reference in code behind in WPF?如何在WPF后台代码中中复制引用的资源?
原文 https://stackoverflow.com/questions/28240528/how-do-i-duplicate-a-resource-reference-in-code-behi ...
- .net高手:forms验证中中<forms loginUrl="" defaultUrl="">defaulturl和loginurl的区别
.net高手:forms验证中中<forms loginUrl="" defaultUrl="">defaulturl和loginurl的区别 d ...
- SQL Server中中数据行批量插入脚本的存储实现
看到博友SQL Server MVP桦仔的一篇博文“将表里的数据批量生成INSERT语句的存储过程的实现”.我仔细看来博文中的两个存储代码,自我感觉两个都不太满意,都是生成的单行模式的插入,数 ...
- iOS 开发中中 textView 作为子控件点击输入文本,然后退出文本的方式
方式1. 使用当双击输入的时候弹出键盘同时,使用手势和通知监听键盘的方法实现 代码如下: 1. 监听键盘通知 [[NSNotificationCenter defaultCenter] addObse ...
- python 列表中[ ]中冒号‘:’的作用
中括号[ ]:用于定义列表或引用列表.数组.字符串及元组中元素位置 list1 = [, ] list2 = [, , , , , , ] print ] print :] 冒号: 用于定义分片. ...
- java程序中中常用到的linux操作
1.解压命令 tar -zxvf filename.tar.gz 其中zxvf含义分别如下 z: gzip 压缩格式 x: extract 解压 v: verbose 详细信息 2.lin ...
- Android源码中中一种常见的struct使用方法
直接看例子: #include<iostream> #include<stdlib.h> using namespace std; struct Base{ int ba; i ...
随机推荐
- JavaScript学习总结(十八)——JavaScript获取浏览器类型与版本
从网上找到一段使用JavaScript判断浏览器以及浏览器版本的比较好的代码,在此记录一下: 1 <script type="text/javascript"> 2 v ...
- 查看dll导出函数的方法
1.使用VS自带工具: (1)进入VS开发环境,然后Tools -> Visual studio 2015 Command Prompt,打开兼容工具命令提示符, (2)cd到dll所在目录,输 ...
- 非常简单的vue里面引入jquery
如何在vue里面引入jq了,只需四部就完成 第一步 cnpm install jquery 第二步 打开build文件夹 , 打开webpack.base.conf.js文件找到下面module.ex ...
- OPENWRT常用设置
常用设置: 计划任务,定时重启 系统--计划任务,每行一个计划任务. 然后是计划任务列表的格式: [minute] [hour] [day of month] [month] [day of week ...
- 集成学习之Boosting —— XGBoost
集成学习之Boosting -- AdaBoost 集成学习之Boosting -- Gradient Boosting 集成学习之Boosting -- XGBoost Gradient Boost ...
- Linux运维学习笔记-iptables知识总结
- caffe测试mnist问题-error while loading shared libraries
问题描述 build/examples/mnist/convert_mnist_data.bin: error while loading shared libraries: libcudart.so ...
- 程序运行时间c++/matlab
前言 一般在调试程序的过程中,需要查看代码运行速度的快慢,此时则需要计算代码的运行时间. 实验过程: c++: #include<iostream> #include<time.h& ...
- Redis的持久化策略
Redis 持久化: 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AO ...
- CodeForces - 140E:New Year Garland (组合数&&DP)
As Gerald, Alexander, Sergey and Gennady are already busy with the usual New Year chores, Edward has ...