博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4668 冷战(并查集)
阅读量:5217 次
发布时间:2019-06-14

本文共 938 字,大约阅读时间需要 3 分钟。

  显然可以用LCT维护kruskal重构树。或者启发式合并维护kruskal重构树的倍增数组虽然多了个log也不一定比LCT慢吧。

  当然这里的kruskal重构树几乎只是把树上的边权换成了点权,并不重要。

  我们要查询的是树上两点间路径边权最大值。显然要并查集按秩合并一波。然后……并查集的树高就是log啊?维护个鬼的倍增数组啊直接暴力啊?

#include
#include
#include
#include
#include
#include
using namespace std;#define ll long long#define N 500010char getc(){ char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')) c=getchar();return c;}int gcd(int n,int m){ return m==0?n:gcd(m,n%m);}int read(){ int x=0,f=1;char c=getchar(); while (c<'0'||c>'9') { if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x*f;}int n,m,lastans,fa[N],len[N],deep[N];bool flag[N];int find(int x){ return fa[x]==x?x:find(fa[x]);}void merge(int x,int y,int i){ int p=find(x),q=find(y); if (p!=q) { if (deep[p]

 

转载于:https://www.cnblogs.com/Gloid/p/9912515.html

你可能感兴趣的文章
滴滴快车历史奖励政策:含工作日和周末的高峰奖励、翻倍奖励【历史政策】...
查看>>
文件操作类2
查看>>
游戏偶感
查看>>
Leetcode: Unique Binary Search Trees II
查看>>
phpcurl类
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Spring-hibernate整合
查看>>
cocos2dx 3.3环境搭建
查看>>
Spring DI
查看>>
c++ map
查看>>
exit和return的区别
查看>>
ThinkPHP5.1安装
查看>>
在Mac OS X中搭建STM32开发环境(2)
查看>>
vi 常用命令
查看>>
js += 含义(小知识)
查看>>
B2321 [BeiJing2011集训]星器 数学&&物理
查看>>
反馈的基础概述
查看>>
使用python绘制根轨迹图
查看>>
Xammp修改端口
查看>>
201571030319 四则运算
查看>>