【NOIP2017练习&BZOJ4998】星球联盟(强联通分量,并查集)
题意:
在遥远的S星系中一共有N个星球,编号为1…N。其中的一些星球决定组成联盟,以方便相互间的交流。
但是,组成联盟的首要条件就是交通条件。初始时,在这N个星球间有M条太空隧道。每条太空隧道连接两个星球,使得它们能够相互到达。若两个星球属于同一个联盟,则必须存在一条环形线路经过这两个星球,即两个星球间存在两条没有公共隧道的路径。
为了壮大联盟的队伍,这些星球将建设P条新的太空隧道。这P条新隧道将按顺序依次建成。一条新轨道建成后,可能会使一些星球属于同一个联盟。你的任务是计算出,在一条新隧道建设完毕后,判断这条新轨道连接的两个星球是否属于同一个联盟,如果属于同一个联盟就计算出这个联盟中有多少个星球。
对于100%的数据有1≤N,M,P≤200000。
思路:


据说还可以用LCT+并查集维护连通性与size大小
var q,fa,size,f,a,b,c,h,head,vet,next,x,y:array[..]of longint;
n,m,p,i,j,u,e,v,t,tot,z,w:longint; procedure add(a,b:longint);
begin
inc(tot);
next[tot]:=head[a];
vet[tot]:=b;
head[a]:=tot;
end; function find(k:longint):longint;
begin
if k=f[k] then exit(k);
f[k]:=find(f[k]);
exit(f[k]);
end; function lca(x,y:longint):longint;
var t:longint;
begin
x:=find(x); y:=find(y);
if x=y then exit(x);
if h[x]>h[y] then
begin
t:=lca(fa[x],y); size[t]:=size[t]+size[x]; f[x]:=f[t];
end;
if h[x]<=h[y] then
begin
t:=lca(fa[y],x); size[t]:=size[t]+size[y]; f[y]:=f[t];
end;
exit(t);
end; begin
assign(input,'bzoj4998.in'); reset(input);
assign(output,'bzoj4998.out'); rewrite(output);
readln(n,m,p);
for i:= to m do read(x[i],y[i]);
for i:= to p do
begin
read(x[m+i],y[m+i]);
b[m+i]:=;
end;
m:=m+p;
for i:= to n do f[i]:=i;
for i:= to m do
begin
u:=x[i]; v:=y[i];
if find(u)=find(v) then continue;
f[f[u]]:=f[v]; c[i]:=;
add(u,v); add(v,u);
end;
for i:= to n do
begin
if h[i]> then continue;
t:=; w:=; q[]:=i; h[i]:=;
while t<w do
begin
inc(t); u:=q[t];
e:=head[u];
while e<> do
begin
v:=vet[e];
if h[v]= then
begin
inc(w); q[w]:=v; h[v]:=h[u]+; fa[v]:=u;
end;
e:=next[e];
end;
end;
end;
for i:= to n do
begin
f[i]:=i; size[i]:=;
end;
//for i:= to n do writeln(h[i]);
//for i:= to m do writeln(c[i]);
for i:= to m do
begin
if c[i]= then
begin
if b[i]= then writeln('No');
continue;
end;
z:=lca(x[i],y[i]);
// writeln(z);
if b[i]= then writeln(size[z]);
end; close(input);
close(output);
end.
【NOIP2017练习&BZOJ4998】星球联盟(强联通分量,并查集)的更多相关文章
- BZOJ 2959: 长跑 lct 双联通分量 并查集 splay
http://www.lydsy.com/JudgeOnline/problem.php?id=2959 用两个并查集维护双联通分量的编号和合并. #include<iostream> # ...
- Kosaraju算法---强联通分量
1.基础知识 所需结构:原图.反向图(若在原图中存在vi到vj有向边,在反向图中就变为vj到vi的有向边).标记数组(标记是否遍历过).一个栈(或记录顶点离开时间的数组). 算法描叙: :对 ...
- [CF #236 (Div. 2) E] Strictly Positive Matrix(强联通分量)
题目:http://codeforces.com/contest/402/problem/E 题意:给你一个矩阵a,判断是否存在k,使得a^k这个矩阵全部元素都大于0 分析:把矩阵当作01矩阵,超过1 ...
- UVa 11324 & 强联通分量+DP
题意: 一张无向图,求点集使其中任意两点可到达. SOL: 强联通分量中的点要么不选要么全都选,然后缩点DAG+DP 记录一下思路,不想写了...代码满天飞.
- BZOJ 1051 & 强联通分量
题意: 怎么说呢...这种题目有点概括不来....还是到原题面上看好了... SOL: 求出强联通分量然后根据分量重构图,如果只有一个点没有出边那么就输出这个点中点的数目. 对就是这样. 哦还有论边双 ...
- 洛谷 P2661 信息传递 Label:并查集||强联通分量
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- POJ 2186-Popular Cows (图论-强联通分量Korasaju算法)
题目链接:http://poj.org/problem?id=2186 题目大意:有n头牛和m对关系, 每一对关系有两个数(a, b)代表a牛认为b牛是“受欢迎”的,且这种关系具有传递性, 如果a牛认 ...
- POJ 1904 King's Quest 强联通分量+输入输出外挂
题意:国王有n个儿子,现在这n个儿子要在n个女孩里选择自己喜欢的,有的儿子可能喜欢多个,最后国王的向导给出他一个匹配.匹配有n个数,代表某个儿子和哪个女孩可以结婚.已知这些条件,要你找出每个儿子可以和 ...
- HDU 1269 迷宫城堡 【强联通分量(模版题)】
知识讲解: 在代码里我们是围绕 low 和 dfn 来进行DFS,所以我们务必明白 low 和 dfn 是干什么的? 有什么用,这样才能掌握他. 1. dfn[] 遍历到这个点的时间 2. ...
- 【POJ 1236 Network of Schools】强联通分量问题 Tarjan算法,缩点
题目链接:http://poj.org/problem?id=1236 题意:给定一个表示n所学校网络连通关系的有向图.现要通过网络分发软件,规则是:若顶点u,v存在通路,发给u,则v可以通过网络从u ...
随机推荐
- 增大PHP允许上传的文件大小;解决POST Content-Length exceeds the limit
在php.ini中: upload_max_filesize = 1000M ;1GB post_max_size = 1000M 然后重启apache 参考链接
- 【深入.NET平台】浅谈.NET Framework基元类型
什么是基元类型? 初学者可能很少听说过这个名词,但是平时用得最多的肯定是基元类型.先看下面两行代码: System.Int32 a = ; ; 上面两行代码都表示声明一个int类型的变量,但在平时写 ...
- YOLOv3模型识别车位图片的测试报告(节选)
1,YOLOv3模型简介 YOLO能实现图像或视频中物体的快速识别.在相同的识别类别范围和识别准确率条件下,YOLO识别速度最快. 官网:https://pjreddie.com/darknet/yo ...
- jmeter 连接 sqlite 进行压力测试
- 软件开发:速度 vs 质量
程序开发项目进行过程中,通常会冒出这样的困惑:应该选择速度,还是选择质量?很多程序猿都会有偷懒的思维,觉得把一些摸不清头绪.不知道怎么写的代码片段去掉,可以节省很多时间,更早完成项目计划. 其实过去几 ...
- 安卓 Android 简单数据库(增删改查)
<Button android:id="@+id/delete_btn" android:layout_width="wrap_content" andr ...
- eureka 注册中心
1.eureka版本更新后,pom依赖名称变化 v1.2.7spring-cloud-starter-eureka-server v2.0.0spring-cloud-starter-netflix- ...
- idea 常用操作
1.创建的maven项目,java文件不提示错误:有main方法但右击却找不到run选项的问题 1)首先要配置SDK--就是配置JDK 2)然后要按照提示信息导入某些maven相关的东西,就这个Eve ...
- java_udp编程
两个重要的类: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/DatagramPacket.html ht ...
- Android之多种Bitmap效果(4)
1. 将图片变为圆角 2. 获取缩略图图片 3. LOMO特效 4. 旧时光特效 5. 暖意特效 6. 根据饱和度.色相.亮度调整图片 7. 添加图片外边框 8. 添加内边框 9. 创建一个缩放的图片 ...