首页 > 其他分享 >[ABC229E] Graph Destruction 题解

[ABC229E] Graph Destruction 题解

时间:2024-04-17 20:57:32浏览次数:23  
标签:int 题解 ans ABC229E fa Graph find

[ABC229E] Graph Destruction 题解

思路解析

题目要求删点,而众所周知删点的代价要大于加点的代价,于是我们考虑倒着处理询问,将每一个删点改成加点,而加点时就用并查集维护连通块即可。

code

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, m, fa[N];
vector<int> g[N];
int find(int x) {
	if(x == fa[x]) return x;
	return (fa[x] = find(fa[x]), fa[x]);
}
int main() {
	cin >> n >> m;
	for(int i = 1, u, v; i <= m; i++) {
		cin >> u >> v;
		g[u].push_back(v);
		g[v].push_back(u);
	}
	for(int i = 1; i <= n; i++) fa[i] = i;
	int ans = 0;
	stack<int> st;
	for(int i = n; i >= 1; i--) {
		st.push(ans);
		ans ++;
		for(auto it : g[i]) {
			if(it > i) {
				if(find(it) != find(i)) ans --;
				fa[find(it)] = find(i);
			}
		}
	}
	while(!st.empty()) cout << st.top() << '\n', st.pop();
	return 0;
}

标签:int,题解,ans,ABC229E,fa,Graph,find
From: https://www.cnblogs.com/2020luke/p/18141753

相关文章

  • P10342 [THUSC 2019] 数列 题解
    形式化题面:求\[\sum_{l=1}^{n}\sum_{r=l}^{n}\max_{i=l}^{r}(i-l+1)\timesf(i,r)\]其中\(f(l,r)\)为\(a_l,...,a_r\)中有多少个不同的数字。注意到,除了Sub2,其余数据点都有\(\maxf\le800\),这启发我们考虑\(O(nm)\)的算法。套路地,扫描线枚举右端点,则现在只需要考虑......
  • [ABC212E] Safety Journey 题解
    [ABC212E]SafetyJourney题解思路解析首先根据题目的条件我们可以想到dp,用\(f_{i,j}\)表示走了\(i\)步,现在在\(j\)的方案数,可见转移即是\(f_{i,u}\gets\sum{f_{i-1,v}}\),这里的\(v\)表示每个与\(u\)相连的点。可见如此做时间复杂度为\(O(kn(\frac{n(n-1)}{2}-m......
  • ICPC2023南京站题解(A C D F G I L M)
    本场金牌线为7题前一半。做出8题可稳金牌,这里是难度前8题的题解。ICPC2023南京站I:签到题。#include<bits/stdc++.h>#definelllonglong#defineQWQcout<<"QwQ"<<endl;#defineFOR()llle=e[u].size();for(lli=0;i<le;i++)usingnamespacestd;constllN=501010;......
  • [ABC208D] Shortest Path Queries 2 题解
    [ABC208D]ShortestPathQueries2题解思路解析此题的本质其实就是Floyd。我们在进行Floyd时会有一个\(k\)充当中间点,可见这里的\(k\)就等于题目当中的\(k\),因为小于等于\(k\)的所有点都被当作过中间点转移过,而大于\(k\)的所有点都没有被当作过中间点转移过,于是直......
  • P3978 [TJOI2015] 概率论 题解
    题意:求一棵\(n\)个节点的有根二叉树的叶子节点的期望个数。设\(f_n\)表示\(n\)个点的二叉树个数,\(g_n\)表示\(n\)个点的所有二叉树的叶子节点数之和。显然\(f_n\)为\(\text{Catalan}\)数,考虑如何求\(g_n\)。一个结论是:\(g_n=f_{n-1}\timesn\)。证明:对于每一......
  • [题解][2021-2022年度国际大学生程序设计竞赛第10届陕西省程序设计竞赛] Cute Rabbit
    题目描述有n只兔子,每个兔子上有一个数ai。要将所有兔子分为白色和绿色两堆,使所有白色兔子的数对绿色兔子取余结果相等。求绿色兔子的最大数量。题解考虑一种情况:把所有除了最小值的数都涂为绿色,此时显然满足条件。对于一般情况:可以枚举白绿兔子的分割线x。对于小于x,试将其全......
  • 前端项目安装node-sass依赖问题解决
    前端项目安装依赖node-sass问题解决记录:(项目中node版本14.16.0node-sass版本4.14.1)问题1:pnpnrunall:install后报错MSBUILD:errorMSB3428:解决方法:需要安装npminstall--globalwindows-build-tools1.1、npm全局安装windows-build-tools1.1安装过程中可能会出现......
  • [题解] [CCPC陕西省赛2022 H题] Cute Rabbit
    [CCPC陕西省赛2022H题]CuteRabbit题目描述有\(n\)只白色的兔子,把其中\(m\)只染成绿色。每只兔子上有一个数\(a_i\),如果所有白色兔子上的数对所有绿色兔子上的数两两取余的值均相同,则该种染色方式合法,求能够使染色合法的最大的\(m\)。输入格式第一行有一个整数\(n(......
  • uoj32 跳蚤公路题解
    题目链接点击打开链接题目解法首先问题等价于有一个负环可以到\(v\)假设环边的\(w\)之和为\(b\),\(c\)之和为\(k\),则这个环的长度就为\(kx+b\)如果是负环,需要满足\(kx+b<0\)钦定负环上的一个点\(st\),令\(f_{i,j}\)表示从\(st\)到\(i\)的路径中,\(\sumc=j\)的......
  • 【问题解决】Fatal error "unsafe repository ('git目录名' is owned by someone else
    问题复现近期升级了Gitv2.37.0,发现在gitbash进入git目录执行git命令时出现错误:Fatalerror"unsaferepository('git目录名'isownedbysomeoneelse)",无法使用git做一些操作。问题解决两个方法:降级到v2.35.2之前,或者,gitconfig--global--addsafe.directory仓库目录......