被gc巨侠D飞来做这题,好恶心,还不让人在线LCT T_T (其实明明就是你忘了强行甩锅)

xgc:并查集乱搞就能过写什么LCT

动态维护双联通分量

我们离线做......

首先做一次最小生成树,构出搜索树

然后没有用到的边就拿去暴力合并环,用并查集跳着找

完了

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;struct node
{int x,y,next;
}a[810000];int len,last[210000];
void ins(int x,int y)
{len++;a[len].x=x;a[len].y=y;a[len].next=last[x];last[x]=len;
}
int fa[2][210000];
int findfa(int x,int w)
{if(fa[w][x]<0)return x;fa[w][x]=findfa(fa[w][x],w);return fa[w][x];
}
int dep[210000];
void dfs(int x)
{for(int k=last[x];k;k=a[k].next){int y=a[k].y;if(dep[y]==0)dep[y]=dep[x]+1, fa[0][y]=x, dfs(y);}
}
int Link(int x,int y)
{int fx=findfa(x,1),fy=findfa(y,1);if(fx!=fy){int tot=0; x=fx,y=fy;while(x!=y){if(dep[x]<dep[y])swap(x,y);tot+=fa[1][x];fa[1][x]=findfa(fa[0][x],1);x=fa[1][x];}fa[1][x]+=tot;}return -fa[1][findfa(x,1)];
}struct edge{int x,y;}e[410000];
bool v[410000];
int main()
{freopen("a.in","r",stdin);freopen("a.out","w",stdout);int n,m,Q,x,y;scanf("%d%d%d",&n,&m,&Q);for(int i=1;i<=n;i++)fa[1][i]=-1;len=1;memset(last,0,sizeof(last));memset(v,false,sizeof(v));for(int i=1;i<=m+Q;i++){scanf("%d%d",&e[i].x,&e[i].y);int fx=findfa(e[i].x,1),fy=findfa(e[i].y,1);if(fx!=fy){v[i]=true; fa[1][fx]=fy;ins(e[i].x,e[i].y), ins(e[i].y,e[i].x);}}memset(dep,0,sizeof(dep));for(int i=1;i<=n;i++)if(dep[i]==0) dep[i]=1, fa[0][i]=0, dfs(i);for(int i=1;i<=n;i++)fa[1][i]=-1;for(int i=1;i<=m+Q;i++){if(v[i]==true){if(i>m)printf("No\n");}else{int d=Link(e[i].x,e[i].y);if(i>m){if(d==-1)printf("No\n");else printf("%d\n",d);}}}return 0;
}

转载于:https://www.cnblogs.com/AKCqhzdy/p/9673385.html

bzoj4998: 星球联盟相关推荐

  1. bzoj4998 星球联盟

    bzoj4998 星球联盟 原题链接 题解 先按照输入顺序建一棵树(森林),然后用一个并查集维护联盟的关系,对于不是树上的边\(a-b\),就把\(a-lca(a,b),b-lca(a,b)\)全部合 ...

  2. 【bzoj 入门OJ】[NOIP 热身赛]Problem C: 星球联盟(并查集)

    Problem C: 星球联盟 Time Limit: 4 Sec  Memory Limit: 256 MB Submit: 57  Solved: 15 [Submit][Status][Web ...

  3. [bzoj4998][LCT][并查集]星球联盟

    Description 在遥远的S星系中一共有N个星球,编号为1-N.其中的一些星球决定组成联盟,以方便相互间的交流.但是,组成 联盟的首要条件就是交通条件.初始时,在这N个星球间有M条太空隧道.每条 ...

  4. JZOJ 3875. 【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)

    Description 在遥远的S星系中一共有N个星球,编号为1-N.其中的一些星球决定组成联盟,以方便相互间的交流. 但是,组成联盟的首要条件就是交通条件.初始时,在这N个星球间有M条太空隧道.每条 ...

  5. 2017.08.20【NOIP提高组】模拟赛B组 【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)

    ####Description 在遥远的S星系中一共有N个星球,编号为1-N.其中的一些星球决定组成联盟,以方便相互间的交流. 但是,组成联盟的首要条件就是交通条件.初始时,在这N个星球间有M条太空隧 ...

  6. 2017.08.20【NOIP提高组】模拟赛B组 【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)...

    ####Description 在遥远的S星系中一共有N个星球,编号为1-N.其中的一些星球决定组成联盟,以方便相互间的交流. 但是,组成联盟的首要条件就是交通条件.初始时,在这N个星球间有M条太空隧 ...

  7. bzoj2959 长跑

    LCT新姿势:维护边双连通分量. 题意:给你一张无向图,有加边,改点权操作. 你需要回答的是:从a到b,给每条边任意定向后,能经过的点权之和最大是多少.(每个点只算一次,点权非负). 可以发现,一个边 ...

  8. [暑假的bzoj刷水记录]

    (这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊  堆一起算了 隔一段更新一下.  7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27upd ...

  9. 2W销量Steam大神,光临联盟微信群,近距离分享成功之路!(聊天实录)

    东方异文石 晚上9点,有群里的「狐玩」大佬邀请一位 Steam 独立开发者,来到 Creator 星球联盟群,分享大作一起交流学习! 游戏名为:东方异文石,截图一发到群里,大家都被美术吸引了,这不是一 ...

最新文章

  1. 29.CSS3边框图片效果
  2. On Perseverance
  3. 给定一个排序好的数组,插入一个数,使其仍然有规律不使用排序算法
  4. 用户金字塔模型详解及在实际运营工作中的意义
  5. 技术部门 Leader 与团队那些事
  6. [No0000178]改善C#程序的建议1:非用ICloneable不可的理由
  7. android程序设计背景,android – 以可编程方式设置drawable作为背景
  8. Java之IO,BIO,NIO,AIO知多少?【请按正文网址阅读】
  9. 火山PC-64位炫彩界面库调用试水-加载资源文件(UI教程)
  10. Ubuntu+ros 绑定端口,一劳永逸,再也不怕端口变化啦!
  11. Linux Mint 19 Tara x86_64安装Docker-ce
  12. svchost.exe“病毒”
  13. wz框架登录功能详解——demo1
  14. 国外电子与通信教材系列最新目录单
  15. 【搬家】VB.NET开发全功能串口调试助手
  16. 各大门户免费登录入口
  17. 台式计算机的安装顺序,台式电脑安装步骤教程
  18. 史上最完美的Android沉浸式状态导航栏攻略
  19. 键盘事件是什么?键盘事件包括哪几种?
  20. 人工智能无法替代的几个职业

热门文章

  1. 第十三届蓝桥杯青少年STEMA(2021.08-2021.03)C++
  2. 《算法竞赛进阶指南》数论篇
  3. null未定义_JS 里的数据类型 - null amp; undefined
  4. 电商扣减库存_电商平台仓库管理系统究竟有何功能?
  5. Spring Boot笔记-@Qualifier与@Autowired与@Bean
  6. Web前端笔记-2D图形平面内平移定位(two.js)
  7. WEB安全基础-点击劫持漏洞基础
  8. 专业课程设计之客户与服务器程序的同步与通信机制的设计(四)信号量
  9. djnago seeeion
  10. linux调用函数和case,Shell篇(3)-单双引号 ,函数及case语句用法