【ybtoj 高效进阶 3.1】 【并查集】 逐个击破
【ybtoj 高效进阶 3.1】 【并查集】 逐个击破
题目
解题思路
换一个思路
求出保留的边
用总边权减去保留的
能被保留下来的边的两个端点不能都被k军团占领
我们要做的就是维护每个连通块
有被占领的集合代表就是被占领的,否则无所谓
按边权降序排序
判断每一条边的两个端点
如果有没被占领的就减去此条边权
两个端点如果不在同一集合
合并两个集合
代码
#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,k,x,p[100010],fa[100010];
long long ans;
struct lzf{int x,y,w;
}f[500010];bool cmp(lzf l,lzf r)
{return l.w>r.w;
}int find(int x)
{if(x==fa[x])return x;else return fa[x]=find(fa[x]);
}int main(){scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n;i++) fa[i]=i;for(int i=1;i<=k;i++){scanf("%d",&x);p[x+1]=1;}for(int i=1;i<=m;i++){scanf("%d%d%d",&f[i].x,&f[i].y,&f[i].w);f[i].x++,f[i].y++; //从1开始,不++只有60分OTATOans+=f[i].w;} sort(f+1,f+m+1,cmp);for(int i=1;i<=m;i++){int xx=find(f[i].x),yy=find(f[i].y); //查找所在集合元素if(xx==yy) //同一集合不合并ans-=f[i].w;else if(!p[xx]||!p[yy]) //不在同一集合且没有都被占领,合并{ans-=f[i].w;if(!p[xx])fa[xx]=yy;else fa[yy]=xx;}}printf("%lld",ans);
}
【ybtoj 高效进阶 3.1】 【并查集】 逐个击破相关推荐
- 【ybtoj 高效进阶 1.5】【广搜】 荆轲刺秦王
[ybtoj 高效进阶 1.5][广搜] 荆轲刺秦王 解题思路 预处理 士兵的监测范围可以用查分做 例,士兵监测范围是3,如图 在每一行能被看到的起点+1,看不到的第一个-1 最后用前缀和求出所有范围 ...
- 【ybtoj高效进阶6-6-2】 期望分数/WJMZBMR打osu! / Easy 【luogu P1365】
期望分数[ybtoj高效进阶6-6-2] WJMZBMR打osu! / Easy [luogu P1365] 题目描述: 给定一个长度为n的由 o,x,? 组成的字符串.计算分数的规则如下:连续 a ...
- 【ybtoj 高效进阶 5.1】【动态规划】求好感度
[ybtoj 高效进阶 5.1][动态规划]求好感度 题目 解题思路 直接用多重背包的话会TLE 所以呢,将件数ai二进制分组 用0/1背包 代码 #include<iostream> # ...
- 算法竞赛进阶指南0x41 并查集
并查集(Disjoint-Set)是一种可以动态维护若干个不重叠的集合,并支持合并与查询的数据结构.详细地说,并查集包括如下两个基本操作: 1.Get:查询一个元素属于哪一个集合. 2.Merge:把 ...
- 《ybtoj高效进阶》第五部分第六章例题3 耗费体力
题目大意 跳跳虎喜欢在树林间跳跃,它从一棵较高的树跳到一棵较矮的树不需要消耗体力,否则消耗一点体力. 给出一排树,在一轮游戏的开始,跳跳虎在第111棵树,它要跳到第nnn棵树.每轮游戏有一个步伐限制 ...
- 0x41.数据结构进阶 - 并查集
目录 一.路径压缩与按秩合并 1.AcWing 237. 程序自动分析(NOIP2015) 二.边带权并查集 1.AcWing 238. 银河英雄传说(边带权并查集模板) 2.AcWing 239. ...
- 并查集(Union-Find-Set)简洁而高效地处理连通分量的查询与合并
并查集(Union-Find-Set)简洁而高效地处理连通分量的查询与合并 并查集由一个整型数组和两个函数构成 1.数组pre[]:记录每个结点的前导结点(父节点),初始化为:pre[i]=i 2.函 ...
- 数据结构进阶之并查集
1.初探并查集 例题1:AcWing 237.程序自动分析 这题的思路其实比较好想,只要先考虑所有等于的情况并合并,然后再看不等于的情况,看是否出现矛盾即可.但是这题显然是需要离散化的,但是离散化也很 ...
- YbtOJ 躲避拥挤(并查集)
目录: 前置知识 题目描述 样例与数据范围 解题思路 AC 代码 前置知识: 并查集 (路径压缩),快速排序(sort),结构体 题目描述: 样例与数据范围: 解题思路: 在并查集的专 ...
最新文章
- Android开发常用第三方平台
- 面试总结之MISC(操作系统,网络,数学,软件开发,测试,工具,系统设计,算法)...
- SSH-permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
- 通信工程制图期末考试大纲
- 大脑使用书全6册有用吗_常锻炼“人体第二大脑”的孩子,不仅智商高,记忆力也很强...
- Jupyter-notebook安装问题及解决
- FB正在大规模重构React Native,预计今年发布
- c:foreach中varStatus参数的含义
- 20160504课堂作业
- ni max不能连续采集图像_1.6视觉检测项目过程分解——程序的连续运行
- 逻辑运算 神经网络_使用神经网络实现逻辑门(第2部分)
- SqlServer利用ODBC连接Mysql数据库
- 打开CMD的方式及常用的DOS命令
- android studio代理设置
- 从这条博客开始转变!
- 同样嗑B站6个月,被室友吊打 35K Offer!
- c语言中整除和模除的优先级,整除运算与取模运算
- 使用HorizontalListView仿车来了公交时刻表
- 肖特基二极管(SBD)和开关二极管的工作原理及选型的学习总结
- 机械检索和计算机检索,手工检索和计算机检索的优缺点