刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

冰阔落 I(2024.3八级)

老王喜欢喝冰阔落。

初始时刻,桌面上有n杯阔落,编号为1到n。老王总想把其中一杯阔落倒到另一杯中,这样他一次性就能喝很多很多阔落,假设杯子的容量是足够大的。

有m 次操作,每次操作包含两个整数x与y。

若原始编号为x 的阔落与原始编号为y的阔落已经在同一杯,请输出"Yes";否则,我们将原始编号为y 所在杯子的所有阔落,倒往原始编号为x 所在的杯子,并输出"No"。

最后,老王想知道哪些杯子有冰阔落。

时间限制:10000

内存限制:65536

输入

有多组测试数据,少于 5 组。 每组测试数据,第一行两个整数 n, m (n, m<=50000)。接下来 m 行,每行两个整数 x, y (1<=x, y<=n)。

输出

每组测试数据,前 m 行输出 "Yes" 或者 "No"。 第 m+1 行输出一个整数,表示有阔落的杯子数量。 第 m+2 行有若干个整数,从小到大输出这些杯子的编号。


样例输入

3 2
1 2
2 1
4 2
1 2
4 3

样例输出

No
Yes
2
1 3 
No
No
2
1 4

使用微信搜索喵呜刷题,轻松应对考试!

答案:

br />对于每组测试数据,首先初始化一个大小为n的数组,用于记录每个杯子是否含有阔落。然后,对于每次操作,检查编号为x的阔落与编号为y的阔落是否已经在同一杯中,如果在同一杯中则输出"Yes",否则将编号为y所在杯子的所有阔落倒往编号为x所在的杯子,并输出"No"。最后,统计含有阔落的杯子数量,并输出这些杯子的编号。

解析:

【喵呜刷题小喵解析】
这个问题可以用一个数组来解决。我们可以创建一个大小为n的布尔数组,其中n是杯子的数量。数组的索引是杯子的编号,值是一个布尔值,表示该杯子是否含有阔落。初始时,所有的杯子都不含有阔落,所以数组的所有元素都应该设置为false。

然后,对于每次操作,我们检查编号为x的阔落与编号为y的阔落是否已经在同一杯中。如果它们已经在同一杯中,那么输出"Yes",否则,我们将编号为y所在杯子的所有阔落倒往编号为x所在的杯子。我们可以通过遍历数组来实现这一点,如果y所在的杯子含有阔落,我们将这个杯子的阔落标记为false,并将x所在的杯子的阔落标记为true。然后,我们输出"No"。

最后,我们统计含有阔落的杯子数量,并输出这些杯子的编号。我们可以通过遍历数组来实现这一点,如果某个杯子的阔落标记为true,那么我们就将它的编号添加到结果列表中,并将含有阔落的杯子数量加1。最后,我们按照编号从小到大的顺序输出这些杯子的编号。

需要注意的是,这个问题有多组测试数据,我们需要对每组测试数据都进行上述操作。我们可以在每次读取一组测试数据之前,清空数组,然后进行上述操作。

在代码实现时,我们需要读取输入,并根据上述算法进行操作,最后输出结果。具体的代码实现可以根据具体的编程语言和环境进行编写。
创作类型:
原创

本文链接:冰阔落 I(2024.3八级) 老王喜欢喝冰阔落。 初始时刻,桌面上有n杯阔落,编号为1到n。老王总

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share