P4630 [APIO2018] 铁人两项(圆方树模版)

news/2024/9/24 3:41:33/

*原题链接*

圆方树相关的东西小粉兔讲的太详细了!!(洛谷日报)

在此贴出适合我体质的模版,至于讲解,咱肯定讲的没小粉兔好o(╥﹏╥)o。

圆方树模版:

void tarjan(int x){dfn[x]=low[x]=++tim,stk[++top]=x;for(int i=head[x];i;i=edge[i].nxt){int y=edge[i].to;if(!dfn[y]){tarjan(y);low[x]=min(low[x],low[y]);if(low[y]==dfn[x]){cnt++;int t;do{t=stk[top--],add(t,cnt),add(cnt,t);}while(t!=y);//注意截止条件add(x,cnt),add(cnt,x);//别忘了和x连边}}else low[x]=min(low[x],dfn[y]);}
}

整题代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+10;int read(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();return x*f;
}int n,m,head[N],tot,he[N],tot2,w[N],sz[N],ans,num,vis[N];
int dfn[N],low[N],tim,stk[N],top,cnt;
struct node{int to,nxt;
}e[N*2],edge[N*2];
void add(int x,int y){edge[++tot].to=y;edge[tot].nxt=head[x];head[x]=tot;
}
void ADD(int x,int y){e[++tot2].to=y;e[tot2].nxt=he[x];he[x]=tot2;
}void tarjan(int x){dfn[x]=low[x]=++tim,stk[++top]=x,num++;for(int i=he[x];i;i=e[i].nxt){int y=e[i].to;if(!dfn[y]){tarjan(y);low[x]=min(low[x],low[y]);if(low[y]==dfn[x]){cnt++;int t;do{w[cnt]++,t=stk[top--],add(t,cnt),add(cnt,t);}while(t!=y);add(x,cnt),add(cnt,x),w[cnt]++;}}else low[x]=min(low[x],dfn[y]);}
}void dfs(int x){vis[x]=1;sz[x]=(x<=n);for(int i=head[x];i;i=edge[i].nxt){int y=edge[i].to;if(vis[y]) continue;dfs(y);ans+=2*sz[x]*sz[y]*w[x];sz[x]+=sz[y];}ans+=2*sz[x]*(num-sz[x])*w[x];
}signed main(){n=read(),m=read();cnt=n;for(int i=1;i<=n;i++) w[i]=-1;for(int i=1;i<=m;i++){int x=read(),y=read();ADD(x,y),ADD(y,x);}for(int i=1;i<=n;i++){if(!dfn[i]){memset(vis,0,sizeof(vis)),num=0,tarjan(i),dfs(i);}}cout<<ans<<endl;return 0;
}


http://www.ppmy.cn/news/1529626.html

相关文章

macOS平台(intel)编译MAVSDK安卓平台SO库

1.下载MAVSDK: git clone https://github.com/mavlink/MAVSDK.git --recursive 2.编译liblzma 修改CMakeLists.txt文件增加C与CXX指令-fPIC set(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-fPIC ${CMAKE_CXX_FLAGS}") 修改如下:…

【AI】简单了解AIGC与ChatGPT

● AIGC&#xff08;AI-Generated Content&#xff0c;人工智能生成内容&#xff09;指的是利用人工智能技术自动生成内容&#xff0c;包括文本、图像、音频、视频等。AIGC的应用非常广泛。AIGC的核心在于利用AI技术来创造新的内容&#xff0c;提高生产效率&#xff0c;降低成本…

从数据仓库到数据中台再到数据飞轮:我了解的数据技术进化史

这里写目录标题 前言数据仓库&#xff1a;数据整合的起点数据中台&#xff1a;数据共享的桥梁数据飞轮&#xff1a;业务与数据的双向驱动结语 前言 在当今这个数据驱动的时代&#xff0c;企业发展离不开对数据的深度挖掘和高效利用。从最初的数据仓库&#xff0c;到后来的数据…

Android状态栏StatusBar颜色修改

<!-- 文字及图标颜色&#xff1a;true为深色&#xff0c;false为浅色 --> <item name"android:windowLightStatusBar">true</item> <!-- 背景色 --> <item name"android:statusBarColor">?android:attr/colorPrimary</i…

【webpack4系列】设计可维护的webpack4.x+vue构建配置(终极篇)

文章目录 构建配置包设计通过多个配置文件管理不同环境的 webpack 配置抽离成一个 npm 包统一管理&#xff08;省略&#xff09;通过 webpack-merge 组合配置 功能模块设计目录结构设计构建配置插件安装webpack、webpack-cli关联HTML插件html-webpack-plugin解析ES6解析vue、JS…

Chrome谷歌浏览器登录账号next无反应

文章目录 问题描述 我们的Chrome浏览器在更新之后&#xff0c;会出现登录谷歌账号的时候&#xff0c;当你输入你的谷歌邮箱之后&#xff0c;点击 n e x t next next,也就是下一步的时候&#xff0c;页面没有反应&#xff0c;也就是没有跳转到输入密码的页面。 分析 根据logs里…

无线感知会议系列【3】【基于WiFi和4G/5G的非接触无线感知:挑战、理论和应用-1】

前言&#xff1a; 2020年北京智源大会 张大庆老师的一个报告 参考链接&#xff1a; 基于WiFi和4G/5G的非接触无线感知&#xff1a;挑战、理论和应用_哔哩哔哩_bilibili 目录&#xff1a; 无线感知简介 无线感知的核心 研究方向 Frsenel 模型 基于Fresnel 感知的应用举例…

table表格,让thead固定,tbody内容滚动,关键是都对齐的纯css写法

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f…