动态MST
原谅我真的写不下去了,太难写了,先占坑。
啥时候有比较连续的时间了再写
肯定没用了的无聊代码
#include <cstdio>
#include <vector>
const int N=2e4+10;
const int M=5e4+10;
struct node
{
int u,v,id;ll w;
bool friend operator <(node n1,node n2){return n1.w<n2.w;}
}e[M],e0[M];
struct gather
{
int b[N],h[N];
int find(int x){return b[x]==x?x:find(b[x]);}
void merge(int x,int y)
{
int ax=find(x),ay=find(y);
if(h[ax]>h[ay])
b[ay]=b[ax],s[++tot]=ay;
else
{
b[ay]=b[ax],s[++tot]=ax;
h[ay]+=h[ay]==h[ax];
}
}
}f,d;
void Union(int l,int r,int rp)//[l,r]中的边集右端点rp
{
for(int u,v,i=1;i<=rp;i++)
{
u=e0[i].u,v=e0[i].v;
f.b[u]=u,f.h[u]=1;
f.b[v]=v,f.h[v]=1;
}
for(int i=1;i<=rp;i++)
if(check(l,r,i))//如果是动态边
f.merge(e0[i].u,e0[i].v);
sort(e0+1,e0+1+rp);
for(int u,v,i=1;i<=rp;i++)
{
u=e0[i].u,v=e0[i].v;
if(!check(l,r,i)&&f.find(u)!=f.find(v))
f.merge(u,v);
}
for(int )
}
void CDQ(int l,int r)
{
if(l==r)
{
}
Union(l,r,rp);
Delete();
}
int main()
{
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=m;i++) scanf("%d%d%lld",&e[i].u,&e[i].v,&e[i].w);
for(int i=1;i<=q;i++) scanf("%d%lld",id+i,d+i);
CDQ(1,q);
return 0;
}
动态MST的更多相关文章
- luogu P4172 [WC2006]水管局长 LCT维护动态MST + 离线
Code: #include<bits/stdc++.h> #define maxn 1200000 #define N 120000 using namespace std; char ...
- [Noi2014]魔法森林( 动态mst lct)
以前一直觉得lct特别难写,自从学了丽洁姐的lct之后,觉得lct居然能这么短,这个主程序能40行左右解决~~~~ 这道嘛~~虽说能用spfa解决,但还是写下lct吧 把边按a值排序后一条一条插入并维 ...
- P3206 [HNOI2010]城市建设 [线段树分治+LCT维护动态MST]
Problem 这题呢 就边权会在某一时刻变掉-众所周知LCT不支持删边的qwq- 所以考虑线段树分治- 直接码一发 如果 R+1 这个时间修改 那就当做 [L,R] 插入了一条边- 然后删的边和加的 ...
- 一堆LCT板子
搞了一上午LCT,真是累死了-- 以前总觉得LCT高大上不好学不好打,今天打了几遍感觉还可以嘛= =反正现在的水平应付不太难的LCT题也够用了,就这样好了,接下来专心搞网络流. 话说以前一直YY不出来 ...
- COJ 0979 WZJ的数据结构(负二十一)
WZJ的数据结构(负二十一) 难度级别:C: 运行时间限制:5000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 请你实现一个数据结构,完成这样的功能: 给你一个 ...
- BZOJ 2594: [Wc2006]水管局长数据加强版( LCT )
离线然后就是维护加边的动态MST, Link cut tree秒掉..不过我写+调了好久...时间复杂度O(NlogN + MlogM) ------------------------------- ...
- 洛谷P4319 变化的道路
题意:给定图,每条边都有一段存在时间.求每段时间的最小生成树. 解:动态MST什么毒瘤...洛谷上还是蓝题... 线段树分治 + lct维护最小生成树. 对时间开线段树,每条边的存在时间在上面会对应到 ...
- Note_4.9
2019/4/9 奇奇怪怪的笔记 关于代码,基本上是现写的,可能连编译都过不了 因为是简单算法场,所以就很不走心了昂,/小纠结 图论相关 最小生成树 prim,kruskal 最小生成树的切割性质 ...
- 【BZOJ 3514】Codechef MARCH14 GERALD07 加强版
题意 \(n\) 个点 \(m\) 条边的无向图,\(k\) 次询问保留图中编号在 \([l,r]\) 的边的时候图中的联通块个数.强制在线. \(n,m,k\le 2\times 10^5\) 题解 ...
随机推荐
- js常用的2中排序方法:冒泡排序和快速排序
冒泡排序:例如9 4 5 6 8 3 2 7 10 1 首先:9和4比较 4放前 4 9 5 6 8 3 2 7 10 1 4和5比较 4不动 4 9 5 6 8 3 2 7 10 1 ...
- js中break跳出多层循环
// 当执行多重循环的时候break的情况 outer: for(var i=0;i<10;i++){ inter: for(var j=0;j<10;j++){ if(i>5){ ...
- 22.1 高级函数【JavaScript高级程序设计第三版】
函数是JavaScript 中最有趣的部分之一.它们本质上是十分简单和过程化的,但也可以是非常复杂和动态的.一些额外的功能可以通过使用闭包来实现.此外,由于所有的函数都是对象,所以使用函数指针非常简单 ...
- python之获取微信好友列表并保存文档中
代码如下 from wxpy import * from pprint import pprint #登录微信 bot = Bot() my_friend = bot.friends() f = op ...
- 编辑工具_vi
vi/vim平时经常会用到,但是一直没有时间系统的整理下,今天看到了一篇不错的介绍文章.引用下,就当做笔记了,但是不晓得该怎么填引用路径,如有侵权请告知,补上引用路径 01. vi 简介 1.1 学习 ...
- python 获取类中除内置方法外的所有方法名
#!/usr/bin/env python# !-*- coding:utf-8 -*- class Menu: def __init__(self): pass def updateProject( ...
- 文件/etc/passwd,/etc/shadow,/etc/group
文件/etc/passwd /etc/shadow /etc/group 计算资源的使用(并不是所有的人都可以用这台计算机的) 权限:访问资源的的能力. 用户:获取资源或者权限的凭证. 用户的容器:关 ...
- McNay Art Museum【McNay艺术博物馆】
McNay Art Museum When I was 17, I read a magazine artice about a museum called the McNay, once the h ...
- POJ3682 概率DP
King Arthur's Birthday Celebration Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3575 ...
- Leetcode 606. 根据二叉树创建字符串
题目链接 https://leetcode.com/problems/construct-string-from-binary-tree/description/ 题目描述 你需要采用前序遍历的方式, ...