题目: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. axis2的WebService无法注入Service层类

    package com.vrv.paw.axiswebservices; import org.springframework.web.context.ContextLoader; import or ...

  2. 线程正常终止pthread_exit,pthread_join,pthread_kill,pthread_cancel,sigwait,sigaddset

    int pthread_join(pthread_t thread, void **retval); int pthread_detach(pthread_t thread); void pthrea ...

  3. A*算法 寻路

    转载 :http://www.cppblog.com/mythit/archive/2009/04/19/80492.aspx A*算法步骤: 1,把起始格添加到开启列表. 2,重复如下的工作: a) ...

  4. Openwrt VLAN Configure(2)

    1      Scope of Document This document describes vlan design on nodewrt2p 2      Requiremen 2.1     ...

  5. git and github问题集锦

    本人遇到的:

  6. webbrowser 静音(刷新、点击网页的声音)(包括flash静音)

    public enum INTERNETFEATURELIST { FEATURE_OBJECT_CACHING = 0, FEATURE_ZONE_ELEVATION = 1, FEATURE_MI ...

  7. Oracle 11g新特性 Interval Partition

    分区(Partition)一直是Oracle数据库引以为傲的一项技术,正是分区的存在让Oracle高效的处理海量数据成为可能,在Oracle 11g中,分区技术在易用性和可扩展性上再次得到了增强.在1 ...

  8. 用正则表达式输出rdf文档的三元组格式数据

    占个位置 1.输出所有尖括号里的内容 package com.jena; import java.io.BufferedReader; import java.io.FileReader; impor ...

  9. ReentrantLock的原理解析

    重入锁(ReentrantLock)是一种可重入无阻塞的同步机制.性能同synchronized接近(老版本jdk中性能很差). 下面重点看下常用的lock()和unlock()方法的实现原理. lo ...

  10. 一款经典的 jQuery Lightbox 灯箱效果

    一个灯箱效果的图片展示插件. 版本: jQuery v1.2.3+ jQuery Lightbox v2.7.1 github 实例预览 使用方法 载入 CSS 文件 <link rel=&qu ...