POJ 3567 Cactus Reloaded(仙人掌直径)
2024-09-04 10:09:29
题意
裸的仙人掌直径。
题解
先考虑基环树的直径:先算出每颗“树”的直径,再在环上跑DP
再考虑仙人掌的直径:把每个基环树缩成一条边,边长为基环树深度。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int N=;
const int M=;
int cnt,head[N];
int c[N*],dp[N],q[N*],ans;
int dfn[N],low[N],tot,fa[N];
int n,m;
struct edge{
int to,nxt;
}e[M*];
void add(int u,int v){
cnt++;
e[cnt].nxt=head[u];
e[cnt].to=v;
head[u]=cnt;
}
void getdp(int x,int y){
int l,r,i,m,p;
for(m=;y!=x;y=fa[y])c[++m]=dp[y];
for(c[++m]=dp[x],i=;i<m;i++)c[i+m]=c[i];
l=r=q[]=;p=m/;
for(i=;i<=m+p;i++){
while(l<=r&&i-q[l]>p)l++;
ans=max(ans,c[i]+c[q[l]]+i-q[l]);
while(l<=r&&c[i]>=c[q[r]]+i-q[r])r--;
q[++r]=i;
}
for(int i=;i<m;i++)dp[x]=max(dp[x],c[i]+min(i,m-i));
}
void Tarjan(int u){
dfn[u]=low[u]=++tot;
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to;
if(fa[u]==v)continue;
if(dfn[v]==){
fa[v]=u;
Tarjan(v);
low[u]=min(low[v],low[u]);
if(dfn[u]<low[v]){
ans=max(ans,dp[v]+dp[u]+);
dp[u]=max(dp[u],dp[v]+);
}
}else low[u]=min(low[u],dfn[v]);
}
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to;
if(fa[v]!=u&&dfn[u]<dfn[v])getdp(u,v);
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=,a,x;i<=m;i++){
scanf("%d%d",&a,&x);
for(int j=,y;j<a;j++){
scanf("%d",&y);
add(x,y);
add(y,x);
x=y;
}
}
Tarjan();
printf("%d",ans);
return ;
}
最新文章
- HashTable(散列表)
- Android--split()分割字符串特殊用法
- Spark入门实战系列--3.Spark编程模型(下)--IDEA搭建及实战
- Kmeans算法的K值和聚类中心的确定
- 【基础】PHP变量及变量作用域
- 12.Android之Tabhost组件学习
- RMB转换人民币大小金额
- leetcode 113 Path Sum II ----- java
- 无DLL线程注入
- Sequence用堆排序
- 转:CSS Overflow 属性
- HTTPCLIENT 模拟登陆
- [转载] Java集合框架之小结
- 基于Web在线考试系统的设计与实现
- 从零开始学安全(三十九)●FCK编辑器解析漏洞
- Scala中 zip或者zipWithIndex的用法
- thusc2017
- python全栈开发day72-django之Form组件
- day35 python学习GIL解释器锁
- C# Remoting 简单实现
热门文章
- 26.boost文件库
- PSSecurityException之PowerShell权限设置
- Codeforces 987B. High School: Become Human
- DotNetCore.1.0.1-VS2015Tools.Preview2.0.2 安装错误分析及解决办法(so far)
- jQuery获取单选框(复选框)选中的状态
- ActiveMQ学习笔记(2)----JMS的基本概念和模型
- Debian9.5系统DNS服务器BIND软件配置说明
- [SCOI2009]windy数 数位dp
- 关于CAS操作
- root用户删除文件提示:Operation not permitted