【洛谷】P2700 逐个击破

news2024/10/6 0:32:27

思路:

先上一份ACode:(具体解释思路在下面)

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10,M=2*N;
int n,k,x,fa[N],sum;
struct E {
	int u,v,w;
} e[M];
int head[N],cnt;
bool vis[N];

bool cmp(E i,E j) {
	return i.w>j.w;
}
void init() {
	for(int i=1; i<=n; i++) fa[i]=i;
}
int find(int x) {
	return fa[x]==x?x:fa[x]=find(fa[x]);
}

void fun() {
	for(int i=1; i<=n-1; i++) {
		int f1=find(e[i].u);
		int f2=find(e[i].v);
		if(!(vis[f1]&&vis[f2])&&f1!=f2) {
			//然后合并的时候必须要两个集合不是都有敌人的城市
			fa[f2]=f1;
			vis[f1]=(vis[f1]||vis[f2]);//如果一个正常节点连接上了敌人节点
			 //那么这个正常节点也变为敌人节点,因为其他敌人点可以通过该正常点
			 //与其他敌人点相连 
			 
		 //如果连接到了被占领了的,另外一个点要被"假占领"(因为合并了,所只要改父亲占领状态就好了)
        //不然的话要是另外一个占领的点连接到了这个点那么就有两个被真占领点联通了 
			sum-=e[i].w;
		}
	}
}
void solve() {
	cin>>n>>k;
	init();//初始化父节点
	for(int i=1; i<=k; i++) { //标记被占领的城市
		cin>>x;
		vis[x]=true;
	}
	for(int i=1; i<=n-1; i++) { //建图
		cin>>e[i].u>>e[i].v>>e[i].w;
		sum+=e[i].w;
	}
	sort(e+1,e+n,cmp);//先令所有道路摧毁,
	//再按大到小修建两个不都是敌人的节点
	fun();
	cout<<sum<<"\n";
}
signed  main() {

	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	int tt=1;
	//cin>>tt;
	while(tt--) {
		solve();
	}
	return 0;
}

 

 

 

ACcode:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10,M=2*N;
int n,k,x,fa[N],sum;
struct E {
	int u,v,w;
} e[M];
int head[N],cnt;
bool vis[N];

bool cmp(E i,E j) {
	return i.w>j.w;
}
void init() {
	for(int i=1; i<=n; i++) fa[i]=i;
}
int find(int x) {
	return fa[x]==x?x:fa[x]=find(fa[x]);
}

void fun() {
	for(int i=1; i<=n-1; i++) {
		int f1=find(e[i].u);
		int f2=find(e[i].v);
		if(!(vis[f1]&&vis[f2])&&f1!=f2) {
			//然后合并的时候必须要两个集合不是都有敌人的城市
			fa[f2]=f1;
			vis[f1]=(vis[f1]||vis[f2]);//如果一个正常节点连接上了敌人节点
			 //那么这个正常节点也变为敌人节点,因为其他敌人点可以通过该正常点
			 //与其他敌人点相连 
			 
		 //如果连接到了被占领了的,另外一个点要被"假占领"(因为合并了,所只要改父亲占领状态就好了)
        //不然的话要是另外一个占领的点连接到了这个点那么就有两个被真占领点联通了 
			sum-=e[i].w;
		}
	}
}
void solve() {
	cin>>n>>k;
	init();//初始化父节点
	for(int i=1; i<=k; i++) { //标记被占领的城市
		cin>>x;
		vis[x]=true;
	}
	for(int i=1; i<=n-1; i++) { //建图
		cin>>e[i].u>>e[i].v>>e[i].w;
		sum+=e[i].w;
	}
	sort(e+1,e+n,cmp);//先令所有道路摧毁,
	//再按大到小修建两个不都是敌人的节点
	fun();
	cout<<sum<<"\n";
}
signed  main() {

	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	int tt=1;
	//cin>>tt;
	while(tt--) {
		solve();
	}
	return 0;
}

 over

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/725574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫入门04——requests库中的User-Agent请求头

import requests#定义请求的url url https://www.baidu.com/ #https://site.ip138.com/www.xicidaili.com/#发起get请求 res requests.get(url url)#获取响应结果#响应对象 print(res)#获取响应状态码 print(res.status_code)#获取响应数据 print(res.text) #返回的是字符…

SignalPlus X 北大汇丰商学院 X SHEF 公开课

&#x1f4e2; SignalPlus X 北大汇丰商学院 X SHEF &#x1f4a0; 数字金融和 AI 量化系列课程第二课 &#x1f4a0; 课程主题&#xff1a;机器学习在金融市场的应用 &#x1f4a0; 时间&#xff1a;2023 年 7 月 5 日 星期三 下午 19:00-21:00 &#x1f4a0; 授课方式&#…

【JUC进阶】10. 使用JMH进行性能测试

目录 1、前言 2、传统的性能测试 2、什么是JMH 3、Hello JMH 3.1、Maven相关依赖 3.2、编写简单示例 4、基本属性配置 4.1、BenchmarkMode 4.2、Benchmark 4.3、OptionsBuilder & Options 4.4、迭代Iteration 4.5、预热&#xff08;Warmup&#xff09; 4.6、状…

一图掌控污水厂运营——远眺污水厂数字孪生平台「捷码精品应用展」

随着我国城市化率的提升与环保意识的逐渐提升&#xff0c;对于污水处理的意识与需求也越来越强&#xff0c;需要处理的污水日益增多&#xff0c;污水厂承担的压力明显变大。 传统污水厂通常通过人工巡检的方式&#xff0c;进行设备和厂区检查和监测&#xff0c;这种方法效率低下…

MODBUSTCP和MODBUSRTU数据帧对比

工具介绍 ModBus Poll 在TCP中模拟客户端&#xff0c;在RTU中模拟主机&#xff1b;&#xff08;请求数据方&#xff09; ModBus Slave 在TCP中模拟服务器&#xff0c;在RTU中模拟从机&#xff1b;&#xff08;响应数据方&#xff09; 数据帧简介 ModBus是一种通信协议&#…

Spring整合Elasticsearch(2)

原生查询 可以查询的范围更精确,当ElasticsearchRepository提供的基本方法无法满足我们所需要的查询可以使用原生的方式查询 Test//原生查询public void naticeQuery(){//创建原生查询构建器对象NativeSearchQueryBuilder queryBuilder new NativeSearchQueryBuilder();//过滤…

【前端】ant-design-pro初体验

什么是Ant Design Pro Ant Design Pro 是一个企业级中后台前端/设计解决方案&#xff0c;它秉承 Ant Design 的设计价值观&#xff0c;致力于在设计规范和基础组件的基础上&#xff0c;继续向上构建&#xff0c;提炼出典型模板/业务组件/配套设计资源&#xff0c;进一步提高企…

第164天:应急响应-挖矿脚本检测指南威胁情报样本定性文件清除入口修复

知识点 #知识点 -网页篡改与后门攻击防范应对指南 主要需了解&#xff1a;异常特征&#xff0c;处置流程&#xff0c;分析报告等 主要需了解&#xff1a;日志存储&#xff0c;Webshell检测&#xff0c;分析思路等 掌握&#xff1a; 中间件日志存储&#xff0c;日志格式内容介绍…

如何给旧电脑安装Linux系统

目录 必要软件下载 下载ultraiso软件 下载linux系统 刻录光盘 U盘启动 必要软件下载 下载ultraiso软件 进入ultraiso官网&#xff0c;链接如下&#xff1a; 最新UltraISO官方免费下载 - UltraISO软碟通中文官方网站 下载linux系统 准备一个8G或者以上的U盘&#xff0c;…

微搭学习路线图,JavaScript入门

目录 1 学习路线1.1 HTML 语义和结构1.2 使用 CSS 布局和美化1.3 使用 JavaScript 开发交互1.4 小程序API1.5 云开发1.6 微搭 2 JavaScript入门2.1 变量2.2 注释2.3 运算符2.4 条件语句2.5 函数2.6 事件 3 示例总结 可多初学的问&#xff0c;微搭学习几个小时够么&#xff0c;几…

学习网页设计html学习总结

学习网页设计html学习总结篇一 转眼间&#xff0c;已到了期末&#xff0c;学习网页设计这门课程也要结束了&#xff0c;虽然时间有点短&#xff0c;但是学过这个几周以后我受益匪浅。 记得最初接触dreamweaver的时候&#xff0c;我很茫然&#xff0c;因为刚接触陌生的软件心里会…

4 springboot配置文件——yaml语法

4.1 yaml配置文件介绍 原先的配置文件是application.properties&#xff0c;但是官方不推荐使用这个&#xff0c;官方推荐使用application.yaml配置文件。因此&#xff0c;将原来的application.properties删除&#xff0c;改为application.yaml。 4.2 yaml配置文件语…

MinIO部署简单使用

前言 前面我们做了分布式文件存储系统FastDFS的部署应用&#xff0c;其安装还是比较繁琐的&#xff0c;而且实际生产的应用限制较大&#xff0c;下面&#xff0c;介绍一款开源的文件系统——MinIO&#xff0c;它是一种对象存储解决方案&#xff0c;提供与 Amazon Web Services…

【回溯算法Part04】| 93.复原IP地址、78.子集、90.子集||

目录 &#x1f388;LeetCode93.复原IP地址 &#x1f388;LeetCode78.子集 &#x1f388; LeetCode90.子集|| &#x1f388;LeetCode93.复原IP地址 链接&#xff1a;93.复原IP地址 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能…

MKS SERVO4257D 闭环步进电机_系列12 STM32_CAN例程

第1部分 产品介绍 具备脉冲接口和RS485/CAN串行接口&#xff0c;支持MODBUS-RTU通讯协议&#xff0c;内置高效FOC矢量算法。 硬件开源&#xff01; 第2部分 相关资料下载 2.1 源代码下载 网盘&#xff1a; 08_例程-STM32系列(CAN) 第3部分 参数配置和注意事项 3.1 电机参…

iPhone 15系规格全面出炉,配置大换血看齐安卓旗舰

网上经常有声音说 iPhone 又不行了&#xff0c;产品竞争力不如安卓云云&#xff0c;事实上是这样的吗&#xff1f; 就拿最近 618 智能手机销售情况来看&#xff0c;苹果一家就以 562.8 万部成绩拿下了近一半市场&#xff0c;营收占比更是高达 67%。 来源&#xff1a;Techlnsig…

OpenCV读取一张8位无符号四通道图像并显示

#include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> #include

聊聊Compose跨平台与KMM

作者&#xff1a;黄林晴 有许多开发者可能还没有了解过Compose Multiplatform和KMM&#xff0c;那么本次分享将通过以下几点来介绍Compose Multiplatform 与KMM&#xff0c;让我们一起体验Kotlin跨平台的魅力。 Compose Multiplatform 与 KMM的关系Compose Multiplatform 与 K…

RK3588平台开发系列讲解(Camera篇)V4L2 主要特性

文章目录 一、V4L2 介绍1.1、模块化的架构1.2、统一的设备节点1.3、统一的视频数据格式1.4、支持多种视频设备1.5、支持流式 I/O1.6、支持控制参数1.7、支持事件通知二、V4L2使用场景沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解V4L2 主要特性。 一、…

赛宁数字孪生靶场:构建验证评估业务的新势能

​​2023年5月1日实施的《关键信息基础设施安全保护要求》中对于关基企业的现有网络安全保障体系提出了更加具体全面的要求&#xff0c;人员、系统、体系是检测评估主要关注的方向。 赛宁数字孪生靶场从验证评估业务的角度出发&#xff0c;借助多云融合能力、多样化仿真能力、…