【BZOJ1123】 [POI2008]BLO (tarjan)
tarjan判断割点...拿掉一个点之后,会被分成若干个联通块,用节点个数和统计一下他们相互不能到达的个数就好。
1 const maxn=100419; 2 maxm=1000419; 3 type 4 edgetype=record 5 toward,next:longint; 6 end; 7 8 var 9 edge:array[0..maxm] of edgetype; 10 first,dfn,low,stack,s:array[0..maxn] of longint; 11 pd:array[0..maxn] of boolean; 12 sum:array[0..maxn] of int64; 13 tot,cnt,i,n,m:longint; 14 15 function min(x,y:longint):longint; begin if x<y then exit(x) else exit(y); end; 16 17 procedure addedge(i,j:longint); 18 begin 19 inc(tot); 20 edge[tot].toward:=j; 21 edge[tot].next:=first[i]; 22 first[i]:=tot; 23 end; 24 25 procedure add(i,j:longint); 26 begin 27 addedge(i,j); addedge(j,i); 28 end; 29 30 procedure tarjan(v:longint); 31 var i,tmp,son:longint; 32 begin 33 son:=0; 34 inc(cnt); dfn[v]:=cnt; low[v]:=cnt; 35 pd[v]:=true; s[v]:=1; 36 i:=first[v]; 37 while i<>0 do 38 begin 39 tmp:=edge[i].toward; 40 if dfn[tmp]=0 then 41 begin 42 tarjan(tmp); 43 s[v]:=s[v]+s[tmp]; 44 low[v]:=min(low[v],low[tmp]); 45 if dfn[v]<=low[tmp] then 46 begin 47 sum[v]:=sum[v]+int64(son)*s[tmp]; 48 inc(son,s[tmp]); 49 end; 50 end 51 else low[v]:=min(dfn[tmp],low[v]); 52 i:=edge[i].next; 53 end; 54 sum[v]:=sum[v]+int64(son)*(n-son-1); 55 end; 56 57 procedure init; 58 var i,a,b:longint; 59 begin 60 readln(n,m); 61 for i:= 1 to m do 62 begin 63 readln(a,b); 64 add(a,b); 65 end; 66 tarjan(1); 67 end; 68 69 Begin 70 init; 71 for i:= 1 to n do writeln((sum[i]+n-1)<<1); 72 End.
转载于:https://www.cnblogs.com/EC-Ecstasy/p/4224940.html
【BZOJ1123】 [POI2008]BLO (tarjan)相关推荐
- 【BZOJ1123】[POI2008]BLO【割顶】
[题目链接] 题意可见discuss. 用Tarjan求割顶,然后对割顶的所有子树求点对个数(前缀和扫一遍),最后把自身和其他点的答案加上. 没注意边,数组开小了. /* Pigonometry */ ...
- 洛谷 P3387 【模板】缩点 (tarjan)
展开 题目背景 缩点+DP 题目描述 给定一个 nn 个点 mm 条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重 ...
- 【bzoj1123】[POI2008]BLO
*题目描述: Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. *输入 输入n<=1000 ...
- 【JDK7】新特性(2) 语法
2019独角兽企业重金招聘Python工程师标准>>> JDK7对Java语法有少量更新,重点是在易用性和便捷性的改进. 1.二进制字面量 JDK7开始,终于可以用二进制来表 ...
- 【Python】将字典(dict)转化为Dataframe
[Python]将字典(dict)转化为Dataframe_张欣的博客-CSDN博客_python字典转dataframe dictory = {'a':1,'b':2} df = pd.DataFr ...
- 【 MATLAB 】离散傅里叶级数(DFS)与DFT、DTFT及 z变换之间的关系
上篇博文我们简单的讨论了离散傅里叶级数DFS和离散傅里叶变换DFT之间的关系,简单地说,DFT就是DFS在一个周期内的表现. [ MATLAB ]离散傅里叶变换(DFT)以及逆变换(IDFT)的MAT ...
- 【FPGA】Buffer专题介绍(三)
目录 背景 IOBUF IOBUFDS OBUF OBUFDS OBUFT OBUFTDS 背景 首先给出这个专题的第一个地址:[FPGA]Buffer专题介绍(一) 第二篇的地址:[FPGA]Buf ...
- 【FPGA】Buffer专题介绍(二)
目录 背景 IBUF IBUFDS IBUFG IBUFGDS 背景 这篇博文是下面这篇博文的继续: [FPGA]Buffer专题介绍(一) 但介绍方式我想放的更自由一点,要不然就是官方文档了. IB ...
- 【FPGA】Buffer专题介绍(一)
目录 背景 BUFG BUFGCE BUFGCE_1 BUFGMUX and BUFGMUX_1 BUFGP BUFH BUFIO2 BUFIO2FB 背景 在数据手册 Spartan-6 Libra ...
最新文章
- MySQL 存储过程传参之in, out, inout 参数用法
- linux 压缩 解压zip 命令
- div中定义局部变量_说说 Go 中的变量(附粗制滥造面试题)
- 离散蚁群算法实例(求解旅行商问题)
- 智能手机的开放与封闭刍议
- 前端中标签页的手写方法
- Windows搭建SonarQube_Mysql
- MATLAB程序详细解析,遗传算法——matlab代码解析
- [C++]二维数组还是一维数组?
- 全面 Severless 化只需要 7天!看南瓜电影的云上升级
- 全“芯”升级,浩辰CAD 2021赋能全国产化CAD应用
- 3.Ubuntu 安装Pinta图片处理工具
- centos6.5安装openoffice和swftools 错误信息
- 极路由1S刷openwrt
- PhpStorm中实现代码自动换行
- mysql的reorg_DB2 runstats和reorg操作
- BK05-蓝鲸智云-标准部署-关键模块逐步操作
- Java 优惠券最优使用实现
- 课程所用软件下载地址
- HBuilder 代码缩放快捷键