hdu5452 Minimum Cut(最近公共祖先LCA+差分前缀和)

SDUT3173 有多少个连续子序列的和能被k整除 题目描述 Edward 得到了一个长度为 N 的整数序列,他想找出这里面有多少个“幸运的”连续子序列。一个连续子序列被称为“幸运的”,当且仅当该子序列内的整数之和恰好是 K 的整数倍数。他请求你写一个程序来计算他喜欢的连续子序列个数。 输入  输入第一行是一个整数 T,表示有 T 组数据。 每组数据第一行是两个整数 N (1 接下来的一行包含 N 个整数 A i (|A 阅读详情

Given a simple unweighted graph  G  (an undirected graph containing no loops nor multiple edges) with  n  nodes and  m  edges. Let  T  be a spanning tree of  G .
We say that a cut in  G  respects  T  if it cuts just one edges of  T .

Since love needs good faith and hypocrisy return for only grief, you should find the minimum cut of graph  G  respecting the given spanning tree  T .
 

Input
The input contains several test cases.
The first line of the input is a single integer  t (1≤t≤5)  which is the number of test cases.
Then  t  test cases follow.

Each test case contains several lines.
The first line contains two integers  n (2≤n≤20000)  and  m (n−1≤m≤200000) .
The following  n−1  lines describe the spanning tree  T  and each of them contains two integers  u  and  v  corresponding to an edge.
Next  m−n+1  lines describe the undirected graph  G  and each of them contains two integers  u  and  v  corresponding to an edge which is not in the spanning tree  T .
 

Output
For each test case, you should output the minimum cut of graph  G  respecting the given spanning tree  T .
 

Sample Input
  
1 4 5 1 2 2 3 3 4 1 3 1 4
 

Sample Output
  
Case #1: 2

http://acm.hdu.edu.cn/showproblem.php?pid=5452

给定一个图的一棵生成树然后给出一些其他的边,没有重边和自环,问在取且仅取一条树边的前提下,图的最小割边的数量是多少?

割边的定义是去掉这几条边可以使连通图不连通。

感觉理解是很重要的,不管是题意还是做法。

对于每条不是树上的边<a, b>, a节点加1, b节点加1,LCA(a, b)减 2,对每颗子树求和。

首先,生成树肯定是一颗经过图中所有点的树。那么,要使图中某两点断连,去掉的边必然包括生成树中的一条或几条边。而题目要求是去且去掉一条,所以可以枚举去掉哪一条树边。

明确w[p]的定义:使p和fa[p]断开所最少需要去掉的非树边的边数。所以没有w[0]。

LCA(a, b)减 2是因为当前枚举的这条去掉的边是不能对LCA(a, b)以及它的父父父…节点造成影响的,在通过dfs函数将子节点值累加到父节点时,+1+1-2,可以消去了。

这个dfs写得真心不错,把原来要用树链剖分还是树形dp的部分直接简化了。

#include<iostream>
#include<algorithm>
#include<string>
#include<map>//int dx[4]={0,0,-1,1};int dy[4]={-1,1,0,0};
#include<set>//int gcd(int a,int b){return b?gcd(b,a%b):a;}
#include<vector>
#include<cmath>
#include<queue>
#include<string.h>
#include<stdlib.h>
#include<cstdio>
#define mod 1e9+7
#define ll long long
using namespace std;
vector<int> g[20005],t[20005];
int fa[20005],vis[20005],w[20005],minn;
int find(int x) {
    return x==fa[x] ? x : (fa[x] = find(fa[x]));
}
void lca(int u,int p){
	for(int i=0;i<t[u].size();++i){
		int v=t[u][i];
		if(v!=p){
			lca(v,u);
			fa[v]=u; 
		}
	}
	vis[u]=1;
	for(int i=0;i<g[u].size();++i){
		int v=g[u][i];
		if(vis[v]==1){
			w[u]++;w[v]++;
			w[find(v)]-=2;  //为什么find(u)是错的?
		}
	}
}
void dfs(int u,int p){
	for(int i=0;i<t[u].size();++i){
		int v=t[u][i];
		if(v!=p){
			dfs(v,u);
			w[u]+=w[v];
		}
	}
	if(u!=0)
		minn=min(minn,w[u]);
}
int main(){
	int tt,cnt=0;
	scanf("%d",&tt);
	while(tt--){
		minn=100000000;
		int n,m,a,b;
		scanf("%d%d", &n, &m);
		memset(w,0,sizeof(w));
		memset(vis,0,sizeof(vis));
		for(int i=0;i<n;++i)
			g[i].clear(),t[i].clear();
		for(int i=0;i<n;++i)
			fa[i]=i;
		for(int i=0;i<n-1;++i){
			scanf("%d%d", &a, &b);
			a--;b--;
			t[a].push_back(b);
			t[b].push_back(a);
		}
		for(int i=n-1;i<m;++i){
			scanf("%d%d", &a, &b);
			a--;b--;
			g[a].push_back(b);
			g[b].push_back(a);
		}
		lca(0,-1);
		dfs(0,-1);
		printf("Case #%d: %d\n",++cnt,minn+1);
	}
    return 0;
}


每次可以从里面拿出一个放在最前(或最后),求最小的次数把数列排好序 每次可以从里面拿出一个放在最前或最后,求最小的次数把数列排好序 http://codeforces.com/problemset/problem/606/C #include #define ll long long using namespace std; int x[100005]; int main(){ int n,a,maxx=0; cin>>n; for(int i= 阅读详情

相关推荐

综合能源系统多时间尺度优化调度!诸多创新点让你抓住审稿人的心!

主要介绍综合能源系统的设备组成结构,并针对屋顶光伏系统、冷-热-电联供系统中的燃气轮机、燃气锅炉、光伏溴化锂制冷机、卡琳娜余热发电、中央空调系统,以及外网交互系统的配电网与天然气管网交互关系进行数学建模。1) 源-荷-储协同调度:研究屋顶光伏、燃气轮机、燃气锅炉等源侧设备,中央空调、电-热-冷负荷、可平移电负荷、可削减温控负荷等负荷侧资源,以及储能系统、电动汽车等储能侧设备的协同调度,以提高风光消纳能力,满足社会能源需求。通过电转热、电转冷、电转气等多能耦合方式,可进一步促进可再生能源的应用与发展。

weixin_48747334的博客 1489

hdu 5452 Minimum Cut 求最小割边集的大小

题意:给定图G的一颗生成树,然后求最小割边集的大小,要求割边集中要有且仅有一条生成树边考虑给定的生成树,求出要把某个子树和其父节点分开的最少割边数,然后枚举除了rootroot以外的最小值+1就是答案了。 转换为求将每个子树要分开的最小割边。就是求这颗子树连接到子树外的边的数量。 如果一条边e(u,v)e(u,v)不是树边,那么对于uu和vv来说它连接到非它本身子树的另外子树的贡献是1,如果要将

inf_force 1089

ICG setup timing violation介绍?

门控时钟(clock gating)在RTL级电路设计过程中进行低功耗优化常用方法,能够有效降低动态功耗(翻转功耗)。Clock gating cell 可以由与门,与非门,或门或者或非门构成,但很容易产生Glitch。在实际使用中,一般用ICG(集成门控时钟单元)来完成clock gating。 下图展示了glitch的产生原因 在CTS时钟树综合的时候,ICG不会被看作sink,通常放置在source点附近,因此就会出现如上图这种结果。上图可以看出,在分析DFF到ICG的setup timing

m0_61003348的博客 9811

HDU - 5452 Minimum Cut 树上差分

题目链接:https://cn.vjudge.net/problem/HDU-5452 题意:n个点,m条边,前n-1条构成一棵树,问最少去掉多少遍使n个点不连通,前n-1条只能去一个 题解:对于一棵树,加上一条边,会形成对应的环,那么这个环上的边要想去掉的话,刚加上的那条边也要去掉,也就是说如果去掉这条边,所对应的最小边集的数量要加一,那么把n-1条边分配给点即可,这样直接思路就是树剖了,但...

还我笑颜 307

详解在linux上安装vpn客户端

详解在linux上安装vpn客户端

FuncPlotCalc 8431

stata 工具变量法【计量经济系列(七)】

stata 工具变量法【计量经济系列(七)】 1. 内生性 2. 工具变量3. 2SLS (二阶段最小二乘法) 4. 弱工具变量5. 工具变量外生性的过度识别检验 6. 豪斯曼检验6.1 传统豪斯曼 6.2 杜宾-吴-豪斯曼检验(DWH)

侯小啾技术博客 2万+

题目清单

Status ID Title Category 1 1 1 1 AC HDU 5512 Pagodas 杂 - Gym 101194E Bet 贪心&高精度 AC HDU 5416 CRB and Tree DFS AC CodeForces 374D Inna and Sequence 树状数组+二分 AC UVA 1754 Posterize DP ...

weixin_30598225的博客 241

HCIE-Datacom笔试题库

关于HCIE Datacom笔试考试题目整理!

坏坏-5的博客 611

hdu 5452 Minimum Cut

给一幅无权无向无环图并给出它的一颗生成树,要求出一个最小割,并且最小割中有且仅有一条树边。 一条从u到v的非树边会让它从树上u到v路径上的边成为最小割的代价+1,所以考虑树链剖分把所有非树边作为更新来更新路径上边的代价。 因为只需要在最后找出最小的那条边,所以直接差分即可。 #include <bits/stdc++.h> #define p...

ad4627的博客 159

共享单车数据抓取与分析:使用Python爬虫抓取共享单车使用数据与地图信息

通过本篇博客,我们展示了如何使用Python爬虫抓取共享单车的使用数据和地图信息,并通过简单的数据分析得出有价值的见解。在实际应用中,数据的收集与分析不仅能帮助城市管理者更好地规划单车站点,还能为用户提供更精准的单车使用体验。未来,我们可以将此分析与机器学习模型相结合,进一步预测单车的使用趋势,优化调度算法,实现更加智能的共享单车管理。

2201_76125261的博客 2204

保边滤波之Mean shift filter

保边滤波之Mean shift filter 目录 保边滤波之Mean shift filter 一、算法原理 二、练手实现的算法代码如下: 三、实现结果 一、算法原理 在OpenCV中,meanshift filter函数为 p...

大熊 1561

HDU - 5452 Minimum Cut (树上差分)

Given a simple unweighted graph G (an undirected graph containing no loops nor multiple edges) with n nodes and m edges. Let T be a spanning tree of G. We say that a cut in G respects T if it cuts jus...

birdmanqin的博客 214

动态视频目标追踪系统:基于YOLOv11+DeepSORT的从入门到实战全流程指南

仅保留车辆类别(假设车辆类别ID为2)if det.class_index == 2: # 车辆类别ID通过本指南,你已完成从环境搭建数据准备模型训练到追踪系统与UI界面的全流程,搭建了一套完整的动态视频目标追踪系统。该系统在安防监控、交通管理等场景中具有实用价值,可实现目标的实时稳定追踪。未来,你可尝试结合多模态特征(如目标外观+运动特征)提升追踪鲁棒性,或探索轻量化模型部署(如TensorRT加速),让系统在边缘设备上也能高效运行。

LXY_LOVE36的博客 142

【树上差分||树链剖分】【HDU5452】Minimum Cut

题目 思路 如果删掉的树边已经决定,我们就只需要删掉连接两部分之间的边。 一条非树边被删,当且仅当树上路径上的边被删。 于是变成了路径+1,求最小值的问题。 可以用链剖,也可以用树上差分 代码 #include<bits/stdc++.h> #define ll long long using namespace std; const int N=2e4+77,M=2e5+77,ci=15; struct E { int v,next; }e[M<<1]; int ls[N],c

Brute♂force 357

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【LCA】HDU 5452Minimum Cut

点击打开链接 题意:给出一棵树 再额外的几条边 求最少删去多少条边(其中必须要一条树上的点)使得点被割开 思路先枚举 删去树上的边 以及还需删去多少边    对于额外的边 u , v    他们的lca 为 fa      删去(fa -> u) 与 (v - > fa ) 之间的点都需要删去 u v 这条边 所以需要 +1  但是fa 以及 以上 就不需要加了  就 减去

Kewowlo 1113

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【HDU - 5452】Minimum Cut(树形dp 或 最近公共祖先lca+树上差分,转化tricks,思维)

题干: Given a simple unweighted graphGG(an undirected graph containing no loops nor multiple edges) withnnnodes andmmedges. LetTTbe a spanning tree ofGG. We say that a cut inGGrespectsTTi...

xuanweiace的博客 537

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

HDU - 5452 Minimum Cut 倍增lca + 思维

题目链接 题意:给你一个图G,让你求删除最少多少的边可以使的图G变为不连通,且所删除的边有且仅有一条属于图G的生成树T。即问你图的最小割集是多大? 思路:我们首先要考虑删除树上哪一条边,对于树上的一个结点,我们要将他们分开,就必须删除它和他父亲之间的那条边. 然后我们在考虑非树边,假设现在有一条非树边e(u,v)。 如果我们现在要删除的树边在 u到LCA(u,v) 和LCA(u,v)到v

Marcus-Bao的个人主页 434

hdu 5452 Minimum Cut (LCA)

题目大意:给一个n个点,m条边的无环、无重边的无向图,并且给出图中的一棵生成树,求最小割边集大小,使得边集中恰好包含生成树中的一条边。 考虑生成树中的每一个结点,将其子树与其父节点分离需要去掉其父边以及其子树中的结点与其他子树相连的边,其父边就是生成树中的边,与其他子树相连的边为非生成树中的边。这样只需统计每一个子树关联的非生成树中的边数,取最小值,然后+1就是答案。 对于每一个结点i

白学病患者的专栏 535

HDU - 5452 Minimum Cut(LCA+树上差分)

题目链接:点击查看 题目大意:给出n个点,n-1条边组成一棵树,然后再给出m-n-1条边,组成一个图,现在要让我们求最少删去几条边才能让整个图不连通,并且要求只能在树上删去最多一条边 题目分析:这个题目的意思有点难懂,大概就是需要删边,删去最少的边让整个图不连通,当我们在一棵树上继续加边的话,必定会形成环,假如我们想让u-v这里出现断点,那么我们就需要将u-v这条边在树上删去,然后再将与u和v...

Falcon的博客 654

HDU5452 Minimum Cut(图论)

Minimum Cut

ZYL的博客 504

Minimum Cut HDU - 5452

题意: 给出一个图G和它的一个生成树T。 现在要求删除生成树上的一条边和若干条其他边,使得图不连通。 求能删除的最小边数。 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;queue&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; using namespac...

空白 207

HDU 5452 Minimum Cut(贪心)

思路:只能切一条生成树上的边,一个比较直观的想法是只切度数为1的点的那条边,然后枚举这个叶子和外面连接的边数即可 #include using namespace std; const int maxn = 20000+7; #define inf 1e9 vectore[maxn]; int vis[maxn]; int deg[maxn],degg[maxn]; int n,m; i

围巾的ACM博客 760

HDU - 5452 Minimum Cut (lca+差分+思维)

Minimum Cut Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 65535/102400 K (Java/Others) Total Submission(s): 1821    Accepted Submission(s): 863 Problem Description Given a simple

K键盘里的青春K 415

hznu 1524 排队买票(dp)【类卡特兰构造】

有M个小孩到公园玩,门票是1元。其中N个小孩带的钱为1元,K个小孩带的钱为2元。售票员没有零钱,问这些小孩共有多少种排队方法,使得售票员总能找得开零钱。注意:两个拿一元零钱的小孩,他们的位置互换,也算是一种新的排法。(M&lt;=10)输入输入一行,M,N,K(其中M=N+K,M&lt;=10)。输出输出一行,总的排队方案。样例输入4 2 2样例输出8http://hsacm.cn/JudgeOn...

芒果街上的小屋(此博客暂时停用) 2944

poj1426 Find The Multiple(哈夫曼思想)

Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there

芒果街上的小屋(此博客暂时停用) 2083

在O(logn)时间内找到数组中离每个数最近而又比它大的数的下标

题目描述   Farmer Zhao's N cows (1 ≤ N ≤ 1,000,000) are lined up in a row. So each cow can see the nearest cow which is taller than it. You task is simple, given the height (0 9) of each cow lined up i

芒果街上的小屋(此博客暂时停用) 1880
上一篇: zoj1505 双向bfs
下一篇: hdu5456 Matches Puzzle Game(记忆化dfs+dp)
ccyy-
博客等级 码龄12年 31粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值