Description Bobo 有 n 个列表 L1, L2, …, Ln. 初始时,Li 仅包含元素 i, 即 Li = [i]. 他依次执行了 m 次操作。第 i 次操作由两个整数 ai, bi 指定, 每次操作分为两步: Lai ← reverse(Lai + Lbi), 其中 ← 表示赋值,+ 表示列表的连接,reverse 表示列表的反转。例如,reverse([1, 2] + [3, 4, 5]) = [5, 4, 3, 2, 1]. Lbi ← []. 其中 [] 表示空的列表。 输出 m 次操作后, L1 的元素。 Input 输入文件包含多组数据,请处理到文件结束。 每组数据的第一行包含两个整数 n 和 m. 接下来 m 行,其中第 i 行包含 2 个整数 ai, bi. 1 ≤ n, m ≤ 105 1 ≤ ai, bi ≤ n, ai ≠ bi n 的总和,m 的总和都不超过 5 × 105. Output 对于每组数据,先输出 L1 的长度 |L1|,再输出 |L1| 个整数,表示 L1 的元素。 Sample Input 2 1 1 2 2 1 2 1 3 3 3 2 3 2 1 3 Sample Output 2 2 1 0 3 2 3 1
时间: 2023-05-24 16:04:06 浏览: 140
解题思路:
首先,分析题目可以得出,每个操作都只涉及到两个列表,因为只有两个参数,且每次清空 Lbi。因此,我们可以使用邻接表来存储这些列表之间的关系。
其中,每个邻接表中存储了与该节点相邻的节点(即执行过操作的节点)。邻接表可以用 unordered_map 来实现,键为节点编号,值为 vector<int> 类型的邻接表。
那么,如何处理这些操作呢?对于一次操作,我们只需将 La 和 Lb 反转,然后将反转后的 La 指向 Lb,将 Lb 置为空即可。反转可以用 reverse() 函数。
最后,我们只需从 L1 开始,依次遍历相邻节点,即可得出 L1 的元素。
代码实现:
相关问题
parser = argparse.ArgumentParser(description=description)
当你在Python中使用`argparse`模块时,`argparse.ArgumentParser()`函数是用来创建命令行解析器的。`Parser`对象是`argparse`库的核心,它帮助处理命令行参数(也称为命令行选项或标志)。
`description`参数是你传递给`ArgumentParser`构造函数的一个字符串,它用于描述你的程序或脚本的主要功能和用途。这个描述会在生成的帮助文档中显示,当用户运行你的脚本并附带`-h`或`--help`选项时,这些信息会被呈现出来,以便用户了解如何正确地使用命令行参数。
以下是一个简单的例子:
```python
import argparse
description = "A simple program that takes command line arguments."
parser = argparse.ArgumentParser(description=description)
# Add arguments here, e.g.
parser.add_argument("-n", "--name", help="Your name", required=True)
parser.add_argument("-v", "--version", action="store_true", help="Show version number")
args = parser.parse_args()
```
在这个例子中,如果用户运行`your_script.py -h`,他们会看到类似这样的帮助输出:
```
usage: your_script.py [-h] [-n NAME] [-v]
A simple program that takes command line arguments.
optional arguments:
-h, --help show this help message and exit
-n NAME, --name NAME Your name (required)
-v, --version Show version number
```
results = GoodsReport.objects.filter(name='螺母') 查询的结果一个字段全部放在列表中
在Django ORM(Object-Relational Mapping)中,当你使用`GoodsReport.objects.filter(name='螺母')`查询时,如果`name`字段通常是字符串类型,并不会自动将查询结果的该字段值放入列表中。它会返回一个QuerySet对象,其中包含了符合条件的所有`GoodsReport`实例。
如果你想获取所有匹配名字为“螺母”的商品报告中,某个字段的所有值作为列表,需要进一步操作。比如,如果你想要把所有的`description`字段放在一起,可以这样做:
```python
results = GoodsReport.objects.filter(name='螺母')
description_list = [report.description for report in results]
```
这里我们使用了列表推导式,遍历查询结果,把每个报告的`description`字段值加入到`description_list`中。
如果你的字段本身就允许存储多个值,如`ManyToManyField`或者JSON类型的字段,处理起来会有所不同,可能需要先进行解析或者转化。
阅读全文