How Far Away?

这篇博客介绍了如何解决一个关于村庄房屋距离查询的问题。村庄中的房屋通过唯一路径相互连接,任务是根据给定的输入数据回答多个距离查询。文章讨论了利用LCA(最近公共祖先)算法来解决此问题,并提供了思路和代码实现。
摘要由CSDN通过智能技术生成

文章目录

题目描述

村子里有 n n n栋房屋,有一些双向道路将它们连接起来。每天, p e o p l e people people总是喜欢这样问:“如果我想从房子 A A A到房子 B B B多远?” 通常很难回答。但是幸运的是,这个村庄的答案始终是唯一的,因为道路的建造方式是每两栋房屋之间都有一条唯一的简单路径(“简单”意味着您不能两次访问某个地方)。您的任务是回答所有这些好youbing的人。

输入格式
第一行是单个整数 T T T T < = 10 T <= 10 T<=10),表示测试用例的数量。

对于每个测试用例,第一行中都有两个数字 n ( 2 < = n < = 40000 ) n(2 <= n <= 40000) n2<=n<=40000 m ( 1 < = m < = 200 ) m(1 <= m <= 200) m1<=m<=200,房屋数量和查询数。

接下来的 n − 1 n-1 n

`pd.merge()` 是 Pandas 库中用于合并数据的函数。它可以根据一个或多个键将不同的 DataFrame 对象合并在一起。 函数语法如下: ```python pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None) ``` 参数说明: - `left`:要合并的左侧 DataFrame。 - `right`:要合并的右侧 DataFrame。 - `how`:合并方式,可选值包括 `inner`(取交集)、`outer`(取并集)、`left`(以左侧 DataFrame 为准)、`right`(以右侧 DataFrame 为准)。 - `on`:要合并的列名,必须同时存在于左右两个 DataFrame 中。 - `left_on`:左侧 DataFrame 中用作合并键的列名。 - `right_on`:右侧 DataFrame 中用作合并键的列名。 - `left_index`:是否使用左侧 DataFrame 的索引作为合并键。 - `right_index`:是否使用右侧 DataFrame 的索引作为合并键。 - `sort`:是否按照合并键进行排序。 - `suffixes`:如果左右 DataFrame 存在相同的列名,用于指定列名后缀的元组。 - `copy`:是否在合并时复制数据。 - `indicator`:是否添加 `_merge` 列,用于指示合并方式。 - `validate`:是否检查合并键是否有效。 示例代码: ```python import pandas as pd # 创建两个 DataFrame df1 = pd.DataFrame({ 'key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4] }) df2 = pd.DataFrame({ 'key': ['B', 'D', 'E', 'F'], 'value': [5, 6, 7, 8] }) # 根据 key 列进行内连接 df3 = pd.merge(df1, df2, on='key', how='inner') print(df3) ``` 输出结果: ``` key value_x value_y 0 B 2 5 1 D 4 6 ``` 在这个例子中,我们首先创建了两个 DataFrame,然后使用 `pd.merge()` 函数将它们根据 `key` 列进行内连接。由于 `key` 列中只有 `'B'` 和 `'D'` 这两个值同时存在于两个 DataFrame 中,因此最终合并的结果只包含这两行数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值