Description

  LongDD 变得非常懒, 他不想再继续维护供员工之间供通行的道路. 道路被用来连接 N(5 <= N <= 10,000)个房子, 房子被连续地编号为 1..N. 每一个房子都是一个员工的家. LongDD 计划除去 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)的时间和员工交谈.


  你需要从某一个房子出发(这是供你选择的),并最终回到这个房子。期间,你要经
过每个房子至少一次,并且当你经过某个房子的时候,你必须和这个房子里的员工 交谈(即使你已经到过).

  假设 LongDD 采纳了你的建议,
请计算出使所有员工都被安慰的最少时间.

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

如果不考虑对每家每户的访问时间 也不考虑要往返的时间
则这题是一个最小生成树模板题
接下来考虑影响
我们对每条边的权值变成两倍再加上其两端点访问距离
再求最小生成树
贴代码

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; int n,m;
struct edge
{
int u,v,l;
}a[100010];
int f[10010],c[10010]; int cmp(const void *a,const void *b)
{
return (((edge*)a)->l < ((edge*)b)->l ? -1 : 1);
} void read()
{
scanf("%d%d",&n,&m);
for (int i=1; i<=n; i++)
scanf("%d",&c[i]),f[i]=i; for (int i=0; i<m; i++)
{
scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].l);
a[i].l<<=1;
a[i].l+=c[a[i].v]+c[a[i].u];
} qsort(a,m,sizeof(a[0]),cmp);
} int find(int x)
{
if (x == f[x]) return f[x];
return (f[x]=find(f[x]));
} void together(int u,int v)
{
int x=find(u),y=find(v);
f[x]=f[y];
} void kruscal()
{
int ans=0x7ffffff,x=0;
for (int i=1; i<=n; i++)
f[i]=i,ans=min(ans,c[i]); for (int i=0; i<m; i++)
{
if (find(a[i].u) == find(a[i].v)) continue;
together(a[i].u,a[i].v);
ans+=a[i].l;
x++;
if (x == n-1) break;
} printf("%d\n",ans);
} int main()
{
read();
kruscal();
return 0;
}

 

【贾志豪NOIP模拟题】慰问员工 cheer 【最小生成树】【对边权值的一些处理】的更多相关文章

  1. 【入门OJ】2003: [Noip模拟题]寻找羔羊

    这里可以复制样例: 样例输入: agnusbgnus 样例输出: 6 这里是链接:[入门OJ]2003: [Noip模拟题]寻找羔羊 这里是题解: 题目是求子串个数,且要求简单去重. 对于一个例子(a ...

  2. NOIP模拟题汇总(加厚版)

    \(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...

  3. 9.9 NOIP模拟题

    9.9 NOIP模拟题 T1 两个圆的面积求并 /* 计算圆的面积并 多个圆要用辛普森积分解决 这里只有两个,模拟计算就好 两圆相交时,面积并等于中间两个扇形面积减去两个三角形面积 余弦定理求角度,算 ...

  4. 8.22 NOIP 模拟题

      8.22 NOIP 模拟题 编译命令 g++ -o * *.cpp gcc -o * *.c fpc *.pas 编译器版本 g++/gcc fpc 评测环境 位 Linux, .3GHZ CPU ...

  5. NOIP模拟题17.9.26

    B 君的任务(task)[题目描述]与君初相识,犹如故人归.B 君看到了Z 君的第一题,觉得很难.于是自己出了一个简单题.你需要完成n 个任务,第i 任务有2 个属性ai; bi.其中ai 是完成这个 ...

  6. 一些noip模拟题一句话题解

    Problem A: 序列 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 12  Solved: 9[Submit][Status][Web Boar ...

  7. noip模拟题题解集

    最近做模拟题看到一些好的题及题解. 升格思想: 核电站问题 一个核电站有N个放核物质的坑,坑排列在一条直线上.如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质. 任务:对于给定 ...

  8. NOIP 模拟题

    目录 T1 : grid T2 : ling T3 : threebody 数据可私信我. T1 : grid 题目:在一个\(n*n\)的方格中,你只能斜着走.为了让问题更简单,你还有一次上下左右走 ...

  9. 9.22 NOIP模拟题

    吉林省信息学奥赛 2017 冬令营                                                                                    ...

随机推荐

  1. CAM对象样式表

    CAM对象样式表 121 160 UF_machining_task_type UF_mach_order_task_subtype 112 UF_machining_null_grp_type 无 ...

  2. javascript-jquery对象的其他处理

    一.对元素进行遍历操作 如果要遍历一个jquery对象,对其中每个匹配元素进行相应处理,那么可以使用each()方法. $("div").each(function(index,e ...

  3. 【c++ Prime 学习笔记】第16章 模板与泛型编程

    面向对象编程(OOP)和泛型编程(GP)都能处理在编写程序时类型未知的情况 OOP能处理运行时获取类型的情况 GP能处理编译期可获取类型的情况 标准库的容器.迭代器.算法都是泛型编程 编写泛型程序时独 ...

  4. the Agiles Scrum Meeting 7

    会议时间:2020.4.15 21:00 1.每个人的工作 根据项目进度,我们将原先的完善组和debug组合并,成为团队项目增量开发组,原增量组成为个人结对项目增量开发组. 今天已完成的工作 个人结对 ...

  5. the Agiles Scrum Meeting 11

    会议时间:2020.4.20 20:00 1.每个人的工作 在这次例会上,我们对上周完成的工作进行了总结. 本周已完成的工作 个人结对项目增量开发组 tq: 创建广播功能 修复纯英文数字可能溢出bug ...

  6. Seata的一些概念

    Seata的一些概念 一.什么是seata 二.AT模式的介绍 1.前提条件 2.整体机制 3.读写隔离的实现 1.写隔离 2.读隔离 三.事务分组 1.事务分组是什么? 2.通过事务分组如何找到后端 ...

  7. Gitflow branch与Docker image tag命名冲突怎么办?

    谷歌还是比必应要好用一点. 在前公司,我根据主流的git flow 给团队搭建了一套devops流程,运行在 docker & k8s上. 在现代devops流程中,一般推荐使用git分支名或 ...

  8. Linux内核漏洞精准检测如何做?SCA工具不能只在软件层面

    摘要:二进制SCA工具要想更好的辅助安全人员实现安全审计.降低漏洞检测的误报率,必须向更细颗粒度的检测维度发展,而不仅仅停留在开源软件的层面,同时对漏洞库的要求也需要向细颗粒度的精准信息提出的挑战. ...

  9. xUtils3的使用教程

    首先在build.gradle下的dependencies下添加引用. implementation 'org.xutils:xutils:3.3.36' 然后创建一个表实体. package com ...

  10. P2120 [ZJOI2007]仓库建设

    P2120 [ZJOI2007]仓库建设 怎么说呢?算是很水的题了吧... 只要不要一开始就把dp想错就行... #include<bits/stdc++.h> #define ll lo ...