当前位置: 首页 > news >正文

10.17_T1 平津战役

题目大意:

有n个点,n-1条边,破坏这条边的代价是已知的,有k个特殊的点,问使这k个点互不相连的最小代价

解题思路:

我们破坏边的最小代价就是建边使得k个点互不相连的最大代价
所以我们不用考虑删边,只考虑如何去建边
也就是说我们要搞一个生成树,用并查集+排序就OK啦~
%%%%爱装蒻的巨佬

Accepted code:

#include<cstdio>
#include<iostream>
#include<algorithm>
#define N 100001

using namespace std;

long long ans;
int n, k, a, b, f[N];
bool vis[N];

struct node {
	int from,to,w;
}e[N];

inline int find(register int x) { return x==f[x]?x:f[x]=find(f[x]); }

inline bool cmp(node x,node y) { return x.w>y.w; }

inline int read()
{
	char c = getchar(); int d = 1, f = 0;
	while (!isdigit(c)) {d = (c == '-')?(-1):(d); c = getchar();}
	while (isdigit(c)) f=(f<<3) + (f<<1) + c - 48, c = getchar();
	return f * d;
}

int main()
{
	n=read(); k=read(); f[n]=n;
	for(register int i = 1; i <= k; i++) vis[read()]=1;
	for(register int i = 1; i < n; i++)
		e[i] = (node){read(), read(), read()}, f[i]=i, ans+=e[i].w;
	sort(e + 1, e + n, cmp);
	for(register int i = 1; i < n; i++)
	{
		a = find(e[i].from);
		b = find(e[i].to);
		if(vis[a] & vis[b]) continue;
		f[a] = f[b];
		ans -= e[i].w;
		vis[a] = vis[b] = vis[a] | vis[b];
	}
	return printf("%lld\n",ans) & 0;
}

转载于:https://www.cnblogs.com/Juruo-HJQ/p/9821832.html

相关文章:

  • EOS开发完全解析(二):用cleos命令行创建、导入、解锁钱包
  • 返回一个二维整数数组中最大子数组的和
  • 1、jeecg 笔记开篇
  • 论文笔记:Visual Semantic Navigation Using Scene Priors
  • InlineHookPsTerminateProcess(0环)
  • 人工智能会改变世界?那这项技能你必须要掌握了。
  • 如何洞悉城市人群移动规律?DataV海量轨迹可视化实践解析
  • webpack4 正确的配置方式
  • 5s管理推进的三个阶段及三大实施原则
  • 小程序生命周期流程
  • 前端缓存-IndexedDB
  • 生产LVS负载均衡与keepalive的高可用实践
  • SQL数据库字段数据类型详细说明
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • Mysql密码重置
  • php的引用
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 【译】理解JavaScript:new 关键字
  • Angular 响应式表单之下拉框
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Python打包系统简单入门
  • Terraform入门 - 1. 安装Terraform
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 与 ConTeXt MkIV 官方文档的接驳
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (C++17) optional的使用
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • (轉)JSON.stringify 语法实例讲解
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .bat批处理(一):@echo off
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Framework杂记
  • .NET MVC 验证码
  • .Net MVC4 上传大文件,并保存表单
  • .Net Web窗口页属性
  • .net 反编译_.net反编译的相关问题
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • // an array of int
  • @SuppressWarnings(unchecked)代码的作用
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [BZOJ 3282] Tree 【LCT】
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [c#基础]值类型和引用类型的Equals,==的区别
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [C++]——带你学习类和对象
  • [CTF]2022美团CTF WEB WP
  • [C语言]——柔性数组
  • [Docker]十.Docker Swarm讲解
  • [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE