首页 > 其他分享 >【模版】广义圆方树の建构

【模版】广义圆方树の建构

时间:2024-11-10 22:45:46浏览次数:1  
标签:tmp cnt 建构 模版 ++ int 圆方树 low dfn

==> 推倒重建版:

void tarjan(int u, int father) {
	stack[++top] = v;
	dfn[u] = low[u] = ++num;
	for(int i = head[u]; i; i = ed[i].last) 
	{
		int v = ed[i].to;
		if(v == father) continue;
		if(!dfn[v]) 
		{
			tarjan(v, u);
			low[u] = min(low[u], low[v]);
			if(low[v] >= low[u]) //求点双连通分量
			{
				int tmp; ++cnt;
				do {
					tmp = stack[top--];
					belong[tmp].push_back(cnt);
				} while(tmp != v);
				belong[u].push_back(cnt);
			}	
		}	
		else low[u] = min(low[u], dfn[v]);
	}
}

void rebuild() {
	G.init();// 猜测是把G记录的原图清理干净
	for(int i = 1; i <= n; i ++) 
	{	
		for(int j = 0; j < (int)belong[i].size(); j ++) 
		{
			G.insert({i, belong[i][j]});
		}
	}
}

==> 边扫边建版:

void tarjan(int u, int father) {
	stack[++top] = v;
	dfn[u] = low[u] = ++num;
	for(int i = head[u]; i; i = ed[i].last) 
	{
		int v = ed[i].to;
		if(v == father) continue;
		if(!dfn[v]) 
		{
			tarjan(v, u);
			low[u] = min(low[u], low[v]);
			if(low[v] >= low[u]) //求点双连通分量
			{
				++cnt;// 猜测cnt的初值为n
				lk(cnt, u); lk(u, cnt);
				int tmp; 
				do {
					tmp = stack[top--];
					lk(cnt, tmp); lk(tmp, cnt);
				} while(tmp != v);
			}	
		}	
		else low[u] = min(low[u], dfn[v]);
	}
}

标签:tmp,cnt,建构,模版,++,int,圆方树,low,dfn
From: https://www.cnblogs.com/UeesugiSakura/p/18538686

相关文章

  • 快读快写模版
    namespaceFastIO{classIn{public:template<typenameT>inlineIn&operator>>(T&x){x=0;boolf=0;charc=getchar();while(c<'0&#......
  • prompt模版
    一、ElavisSaravia框架Instruction(指令)明确模型需要执行不同的特定任务。Context(上下文)为模型提供理解请求所需的背景信息。InputData(输入数据)模型处理的具体数据。OutputIndicator(输出指示)指示期望的输出类型或格式。二、CRISPE框架Capacityandrole(能力......
  • 模版初阶(模版)
    目录模版堆c++的重要性泛型编程函数模版函数模板的格式:函数模版的原理:函数模版的实例化:模版参数的匹配使用类模板:模版的定义和声明:类模板和函数模板的区别:补充:模版堆c++的重要性其实在函数重载里面可以解决这个问题,但是我们却可以使用c++发明出的模板,这个博班让c+......
  • 圆方树
    前置知识:点双连通分量定义圆方树:对于一个点双内的点,拆除点之间所有相连的边,并和一个代表该点双的点连边圆点为原图中的点,方点代表一个点双圆方树有狭义和广义两种狭义圆方树不把“杠铃形”当作点双,有圆圆边广义圆方树把“杠铃形”当作点双,只有圆方边狭义圆方树是解决仙人......
  • abc318_g Typical Path Problem 题解 圆方树
    题目链接:https://atcoder.jp/contests/abc318/tasks/abc318_g题目大意:给出一个有\(n\)个顶点和\(m\)条边的无向连通图\(G\),没有重边和自环。顶点的编号为\(1\simn\),边的编号为\(1\simm\),第\(i\)条边连接顶点\(u_i\)和\(v_i\)。给出图上三个不同的顶点\(A,B,C......
  • C语言用GNU源码编译建构系统工具(GNU BUILD SYSTEM)编译创建动态库
    C语言用GNU源码编译建构系统工具(GNUBUILDSYSTEM)编译创建动态库首先看一下这篇博文:C语言数据结构之顺序结构(Sequence)此次目的是将sequence.c改造一下,创建为一个动态链接库同时打包一个可发布的源码包,包括源码、头文件、测试文件!创建工作目录工作目录libmg(mg即muggles,一......
  • 大学生个人网页设计 HTML个人网页制作 - html电影介绍电视剧网页模版(8页)
    ......
  • 模版字符串反引号
    JavaScript的模板字符串(templatestring)是一种字符串字面量,使用反引号(`)来标识。它可以包含动态的部分,即在运行时表达式的值可以嵌入其中。模板字符串中的表达式写在${}内。任何字符串都可以用反引号来创建,而且可以嵌入表达式。letname='Alice';letage=25;letgreeting=......
  • 【办公类-53-14】2024年9月周计划系列优化(5天、6天、7天模版)
    11月为了迎接普及普惠督导抽查,所有班级资料都要做到第11周。我拿出去年的周计划代码,重新批量一下。这学期做代码有一个难点——并非全部5天,“国庆节”的4-5周是7天教案放在一个WORD模版上5天模版(一横三竖=4页)节日写法7天模版(一横四竖=5页)而原版的周计划里面也有6天7......
  • servlet创建模版使用
    首先我们的IDEA中servlet的模板2023版就取消掉了,需要我们自己去创建模板,打开设置找到点击文件和代码模板点击其他中的web找到下属的servletAnn....将内容代码复制,然后点击文件--+号,设置name,并且将代码粘贴进去我们可以在doPost中添加this.doGet(request,response);这样在新......