hdu 4496 - D-City (基础并查集)

判断图的连通性 题目描述 给定一个无向图G,写一个程序处理以下两种操作: 1. 删去一条边(u, v) 2. 询问两点u,v 是否连通 输入 输入文件的第一行包含三个整数n, m, q,依次代表图的顶点数、边数、询问的个数。 接下来m 行,每行两个整数u, v,描述图中的一条边(u; v)。接下来q 行,每行三个整数t, u, v,描述一个操作。若t = 1 则操作代表删去边(u; v),否则操作代表询 阅读详情

传送门:hdu 4496


题意:给你n个点和m条边,依次连接这m条边。然后按照输入顺序删除每一条边,问你每次删掉一条边以后的图中的联通块个数。


思路:倒序加边,从一条边都不加到加入m-1条边(因为第一个输出的是删掉第一条边后的结果,所以不加入第一条边)。一条边都不加的时候联通块个数为n,即点的个数。每加入一条边判断这两个点是否拥有同一个父节点,如果不是说明他们在两个不同的联通块中,可以将他们合并,并且联通块个数是加入这条边之前的联通块个数-1;否则说明他们在同一个联通块中,加入这条边不改变联通块个数。


AC代码:

/**********************************************
	Author:		StupidTurtle
	Date:		2018.5.20
	Email:		31601359@stu.zucc.edu.cn
**********************************************/

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

typedef long long ll ;
const int oo = 0x7f7f7f7f ;
const int maxn = 1e4 + 7 ;
const int maxm = 1e5 + 7 ;
const int mod = 1e9 + 7 ;

int pre[maxn] , ans[maxm] ;

int Find ( int x ){
	return x == pre[x] ? pre[x] : pre[x] = Find(pre[x]) ;
}

struct node{
	int u , v ;
};

node p[maxm] ;

int main(void){
	
	int n , m ;
	while ( ~scanf("%d%d",&n,&m ) ){
		for ( int i = 0 ; i < n ; i ++ ){
			pre[i] = i ;
		}
		for ( int i = 0 ; i < m ; i ++ ){
			scanf("%d%d",&p[i].u,&p[i].v );
		}
		ans[m] = n ;
		for ( int i = m - 1 ; i > 0 ; i -- ){
			if ( ans[i+1] == 1 ){
				ans[i] = 1 ;
				continue ;
			}
			int fu = Find(p[i].u) , fv = Find(p[i].v) ;
			if ( fu == fv ){
				ans[i] = ans[i+1] ;
			} else {
				pre[fu] = fv ;
				ans[i] = ans[i+1] - 1 ;
			}
		}
		for ( int i = 1 ; i <= m ; i ++ ){
			printf("%d\n",ans[i] );
		}
	}
	
	return 0 ;
}

Win11+Ubuntu18.04+Ubuntu20.04三系统安装与卸载 以下情况均为个人情况:1.插入启动 U 盘后,登录时可以按F12(拯救者Y7000,不同电脑不同)进入BIOS,选择从启动盘启动。2.。3.5.在win基础上,安装第一个Ubuntu系统后,系统启动界面类似如下第一张图,Ubuntu不显示版本号。安装第二个Ubuntu系统后,系统启动界面如下第二张图,如果想更改启动项的名称,可自行查阅相关资料。 阅读详情

相关推荐

ADS 使用教程(十八)Encrypting Designs using RFIP Encoder in ADS

在这一节,我们使用RFIP Encoder进行设计加密,这是一种保护知识产权和敏感设计数据的重要方法。RFIP Encoder提供了一种安全的方式来加密设计文件,确保只有授权人员能够访问和使用这些文件。

Dirge19的博客 1169

[bzoj 4424]Cf19E Fairy

给定 n 个点,m 条边的无向图,可以从图中删除一条边,问删除哪些边可以使图变成 一个二分图。 这道题还是不错的。 看到无向图的题目,应该一开始要往dfs树上面想。其实是因为最近吃够教训了 那么根据上面套路,我们先弄出一棵生成树。对于那些非树边,如果x与y之间的点数为偶数,称之为偶边,如果为奇数,就为奇边。 二分图的充要条件是不存在奇环,且点数要在2个或以上(这个出题人好像没卡),所以我们的目...

galiqing的博客 408

LlamaIndex 入门实战

LlamaIndex是一个“数据框架”,用于帮助构建LLM应用程序。它提供了各种工具,包括数据连接器,用于摄取现有数据源和数据格式(API,PDF,文档,SQL等),以及用于将数据结构化(索引,图形)以便与LLM轻松使用的方式。此外,LlamaIndex还提供了高级的检索/查询接口,可以输入任何LLM输入提示,并返回检索到的上下文和增强知识的输出。它还允许与外部应用程序框架(如LangChain,Flask,Docker,ChatGPT等)轻松集成。

AIGC搞起 1万+

hdu 4496 并查集 逆向 并查集删边

貌似某大犇说过 正难则反,,, 题目说要对这张图进行删边,然后判断联通块的个数,那么就可以先把所有边都删掉,之后从后往前加边,若加的边两端点不在同一个联通块中, 那么此时联通快个数少一,否则不变 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 5...

weixin_30270561的博客 197

【算法】图解A* 搜索算法

A* 算法是启发式搜索算法,是根据Dijkstra算法改进而来。 问题引入 如下图所示,S为起始(start)节点,G为目标(goal)节点。 节点之间连线是两点的路径长度,如A到E的路径长度c(A,E) = 9。 节点旁的h值时当前节点到达目标节点(G)的预估值,如h(A)=15, 表示从当前点A到达目标点G的估计路径长度为15,此处h(x)即为启发函数,启发函数的设计有很多方法,具体可......

zhuhua造轮子的博客 4万+

5G NR上行控制信道PUCCH

一、PUCCH概述 PUCCH用于承载上行控制信息,相比LTE,NR PUCCH支持5种不同的格式,按照时域上所占用的符号数量可以分为短格式和长格式两种,如下表所示,短格式占用1-2个符号,可以承载1-2bit信息,长格式占用4-14个符号,可承载大于2bit的信息。NR引入短格式PUCCH的目的是可以缩短HARQ-ACK反馈的时延,长格式仍然是考虑到持续时间长可以保证覆盖。 NR中,考虑到系...

一个关于5G NR的博客^^ 3万+

每次去掉一条边判断是否连通

#include #include #define N 10005 int n,m,Q,l,r,x[N],y[N]; struct DSU{ int f[505],c; int get(int x){return f[x]?f[x]=get(f[x]):x;} void Link(int x,int y){x=get(x),y=get(y); if (x!=y) f[x]=y,c++;} }

durong123123123的专栏 958

基于深度学习的水质预测:多参数监测与预测

在本篇博客中,我们详细介绍了如何使用深度学习技术处理水质预测问题,包括数据集的准备与预处理、多层感知机模型的构建、模型的训练与评估以及模型优化策略。我们使用 Python 语言基于 TensorFlow 和 Keras 框架实现了模型,并给出了各种模型优化方法及对应代码。通过实践,我们可以发现深度学习技术在水质预测方面具有很好的应用潜力。在实际应用中,我们还可以根据具体问题和数据集进一步调整和优化模型,以获得更好的预测性能。

斌擎科技 1081

HDU5631(并查集)

题目大意:n个顶点,n+1条边,问删除几个边之后仍是连通图的方案数有多少? 思路:如果图连通的话,只能删1~2条边,而且题目数据小,所以暴力就好。 #include #include #include #include #include #include using namespace std; int fa[111]; int from[111], to[111]; int n;

phantom_kiddo的博客 693

NVIDIA Isaac ROS - 入门教程(一)

欢迎访问 Isaac ROS,这是一套硬件加速、高性能、低延迟的 ROS 2 软件包,用于制造自主机器人,充分利用 Jetson 和其他英伟达平台的强大功能。英伟达 Jetson 平台运行在基于 Ubuntu Linux 的 JetPack 操作系统上。JetPack 5.x 是在 Ubuntu 20.04 Focal 的基础上构建的,这意味着由 ROS 2 Buildfarm 为 Ubuntu 22.04 Jammy 构建的 ROS 2 Humble 的 Debian 包不受支持。由于官方 ROS 2 B

机器人控制与仿真应用 5721

STM32声源定位:实现声源定位的嵌入式解决方案

通过以上代码,我们可以获取麦克风音频信号样本,并使用交叉相关法计算声源的位置。然而,我可以帮助您解答有关STM32声源定位的问题,提供相关的代码和指导。获取了麦克风音频信号后,我们可以使用信号处理算法来计算声源的位置。该算法通过计算不同麦克风之间的信号延迟来确定声源的方向。首先,我们需要获取每个麦克风的音频信号。声源定位是一项重要的技术,可以帮助我们确定声音的来源位置。在嵌入式系统中,使用STM32微控制器可以实现精确的声源定位。声源定位的基本原理是通过多个麦克风阵列接收到的声音信号来计算声源的位置。

UplKubernetes的博客 2581

HDU4496 D-City【基础并查集】

Problem Description Luxer is a really bad guy. He destroys everything he met.  One day Luxer went to D-city. D-city has N D-points and M D-lines. Each D-line connects exactly two D-points. Luxer will...

独钓门前月 387

RTA_OS基础功能讲解 2.6-资源锁和自旋锁

访问需要在任务和 ISR 之间共享的硬件或数据可能不可靠、不安全。这是因为当优先级较低的任务或 ISR 正在更新共享数据时,可能会发生任务或 ISR 抢占。这种情况被称为竞争条件,极难测试。访问共享数据的语句序列称为关键部分。要安全访问关键部分中引用的代码和数据,就需要执行互斥。换句话说,必须确保系统中没有其他任务或第 2 类 ISR 能够在关键部分期间抢占正在执行的任务。你可以将任务声明为非抢占式任务,这样就可以避免互斥问题。

本博客专注于嵌入式软件领域技术分享。 291

HDU-4496-D-City(并查集基础)

D-City Problem Description Luxer is a really bad guy. He destroys everything he met. One day Luxer went to D-city. D-city has N D-points and M D-lines. Each D-line connects exactly two D-points. Luxer...

qq_43461168的博客 295

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

hdu 4496 D-City(并查集)

题目链接:hdu 4496 D-City 题目大意:给出一张图,按照给定边的顺序逐个删除,问没删除一条之后的联通块数量。 解题思路:逆向并查集求联通分量,假设一开始各个城市都不连通,然后从最后一条边开始添加,如果新添加的边联通了两个联通块,那么联通分量就要减1,最后在正序输出即可。 #include #include const int N = 10005; c

不慌不忙、不急不躁 1360

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

HDU 4496-D-City(并查集)

D-City Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 6470 Accepted Submission(s): 2213 Problem Description Luxer is a really bad guy. He d...

在读NLP硕士 1130

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

HDU 4496 D-City 删边并查集

一、内容 Luxer is a really bad guy. He destroys everything he met. One day Luxer went to D-city. D-city has N D-points and M D-lines. Each D-line connects exactly two D-points. Luxer will destroy all the...

Tizzi的博客 786

HDU4496 D-City并查集逆向推理

D-City Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 3035    Accepted Submission(s): 1074 Problem Description Luxer is a really b

逝水流年轻染尘 653

HDU-4496 D-City (并查集)

感觉做过类似的。。。很快就想到倒着处理,就可以利用并查集写了

idealism_xxm的专栏 415

HDU 4496 D-City 并查集倒排加边

D-CityTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 4344 Accepted Submission(s): 1530Problem Description Luxer is a really bad guy. He de

lixiyi的博客 355

HDU 4496 D-City(并查集)

题目链接:HDU 4496 D-City

fobdddf的专栏 1193

hdu 4496 D-City(并查集)

题目:hdu 4496 D-City 题目大意:n代表n座城市,m代表m条关系。刚开始所有的城市都是连在一起的,这样就是一个联通分量,然后给出m条关系,每条关系x y 代表x y之间有一条通道使两座城市相连,问按顺序去掉这样的通道后,每次去掉一条会变成几个联通分量。 解题思路:这题题目保证最后一定会变成n个联通分量,即这n个城市都是不相连,这样从后往前每一条边的加入可能会改变联

854

hdu-4496-D-City

D-City Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 3838Accepted Submission(s): 1379 Problem Description Luxer is a really bad gu...

141

【并查集】-HDU-4496-D-City

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4496 题目描述:问毁坏K条边后还有几堆? 解题思路: 还是并查集,反过来做就行了,坑的是这题竟然是EOF输入,它又没说! 然后我还是WA了几下,因为不能每次都遍历查有多少堆,那样会超时,像改完的代码里那样用个Num计数就行了。 这种计数方式应该记着点,可能挺有用的、 AC代码: #inc

邂逅黛玛姑娘 960

HDU 4496 D-CITY(并查集)

HDU4496 D-CITY(并查集) 题目描述:给出一个有N(0 输入:第一行是N和M,然后是M行数(X,Y)(0 输出:依次输出所求的连通分量数。 分析:当删除前K条边时图所剩的连通分量数就是N个孤立的点只添加后M-K跳边时,所具有的连通分量数。 所以仅需倒叙插入每条边,分别保存插入边后有的连通分量数在数组内,然后输出数组即可。 AC代码中未加while(scanf("%d%d",

code 1472

HDU4496 D-City【并查集删边】

D-CityProblem Description Luxer is a really bad guy. He destroys everything he met. One day Luxer went to D-city. D-city has N D-points and M D-lines. Each D-line connects exactly two D-points. Luxe

wyjwyl的专栏 465
上一篇: cf div2 #453 ABC(D)
下一篇: 权值线段树、主席树学习
Stupid_Turtle
博客等级 码龄9年 25粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值