题目: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中中救援队的更多相关文章

  1. 全栈开发工程师微信小程序-中(中)

    全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...

  2. SpringBoot Web项目中中如何使用Junit

    Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性. 凭本人的感觉和经验来说,在项目中完全按标准都写Junit用例覆盖大部分业务代码的,应该不会超过一半. ...

  3. 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 ...

  4. .net高手:forms验证中中<forms loginUrl="" defaultUrl="">defaulturl和loginurl的区别

    .net高手:forms验证中中<forms  loginUrl="" defaultUrl="">defaulturl和loginurl的区别 d ...

  5. SQL Server中中数据行批量插入脚本的存储实现

        看到博友SQL Server MVP桦仔的一篇博文“将表里的数据批量生成INSERT语句的存储过程的实现”.我仔细看来博文中的两个存储代码,自我感觉两个都不太满意,都是生成的单行模式的插入,数 ...

  6. iOS 开发中中 textView 作为子控件点击输入文本,然后退出文本的方式

    方式1. 使用当双击输入的时候弹出键盘同时,使用手势和通知监听键盘的方法实现 代码如下: 1. 监听键盘通知 [[NSNotificationCenter defaultCenter] addObse ...

  7. python 列表中[ ]中冒号‘:’的作用

    中括号[ ]:用于定义列表或引用列表.数组.字符串及元组中元素位置 list1 = [, ] list2 = [, , , , , , ] print ] print :]   冒号: 用于定义分片. ...

  8. java程序中中常用到的linux操作

    1.解压命令 tar -zxvf filename.tar.gz 其中zxvf含义分别如下 z: gzip      压缩格式 x: extract  解压 v: verbose 详细信息 2.lin ...

  9. Android源码中中一种常见的struct使用方法

    直接看例子: #include<iostream> #include<stdlib.h> using namespace std; struct Base{ int ba; i ...

随机推荐

  1. 修改XML的节点内容

    这种形式可以修改任何一个节点: XmlDocument doc = new XmlDocument(); doc.Load("Event.xml"); XmlElement eve ...

  2. 如何合理的规划一次jvm性能调优

    https://blog.csdn.net/miracle_8/article/details/78347172 摘要: JVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考虑各方面的 ...

  3. React Js之组件(Component)与state

    React Js组件: 组件(Component)是为了更好的维护我们的应用,可以在不影响其他的组件的情况下更新或者更改组件. state:是标记数据的来源,我们使state比较简单和单一,如果我们有 ...

  4. OPENSHIFT MYSQL使用Navicat远程连接

    1.安装OpenShift的一个叫RHC的远程管理客户端:https://developers.openshift.com/en/getting-started-windows.html 注意ruby ...

  5. cocos2d-x安装教程

    cocos2d-x安装教程 cocos的安装方法有多种,今天讲的是其中一种,使用cocos的源代码直接进行编译. 下载cocos2d-x的源代码,提供两种方式给大家 -- 中文官网下载 -- 英文官网 ...

  6. 跟我一起学习ASP.NET 4.5 MVC4.0(五)

    前面几篇文章介绍了一下ASP.NET MVC中的一些基础,今天我们一起来学习一下在ASP.NET MVC中控件的封装.在页面中我们会经常使用到Html对象,来程序控件,当然这里的控件不是说ASP.NE ...

  7. Spring学习笔记之The IoC container

    IoC is also known as dependency injection (DI). 这是一个过程?什么样的过程呢?对象自己定义它的依赖关系,这意味着,那些他们依赖的对象,只能通过构造函数参 ...

  8. DevExpress v18.1新版亮点——WinForms篇(三)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v18.1 的新功能,快来下载试用新版本! ...

  9. swig的语法和用法

    1.swig一般在js文件里引入方法: __inline(*.tpl),如下图所示 2.特殊用法 swig模板里套用swig模板,<link rel="import" hre ...

  10. PHP多种序列化/反序列化的方法 serialize,json_encode等

    序列化是将变量转换为可保存或传输的字符串的过程:反序列化就是在适当的时候把这个字符串再转化成原来的变量使用.这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性. 1.  serialize ...