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

简答题

3.冰阔落 I
老王喜欢喝冰阔落。
初始时刻,桌面上有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 />对于每组测试数据,首先进行m次操作,每次操作根据题目要求判断x和y是否已经在同一杯,如果已经在同一杯则输出"Yes",否则将y所在杯子的所有阔落倒往x所在的杯子,并输出"No"。最后统计有阔落的杯子数量,并输出这些杯子的编号。

解析:

【喵呜刷题小喵解析】
对于每组测试数据,首先读取n和m的值,然后进行m次操作。每次操作读取x和y的值,判断x和y是否已经在同一杯,如果已经在同一杯则输出"Yes",否则将y所在杯子的所有阔落倒往x所在的杯子,并输出"No"。

对于判断x和y是否已经在同一杯,可以使用一个数组或者哈希表来记录每个杯子中是否有阔落。对于每次操作,如果x和y已经在同一杯,则输出"Yes",否则将y所在杯子的所有阔落倒往x所在的杯子,即将y所在杯子的阔落标记删除,同时在x所在杯子中添加y的标记。

最后,统计有阔落的杯子数量,并输出这些杯子的编号。可以使用一个计数器来记录有阔落的杯子数量,同时使用一个数组或者哈希表来记录每个杯子中是否有阔落。对于每个杯子,如果有阔落,则将其编号输出,并将计数器加1。

需要注意的是,由于有多组测试数据,需要在每组测试数据之间清空数组或者哈希表,避免相互影响。同时,由于每组测试数据的n和m的值较大,需要使用高效的算法来处理。
创作类型:
原创

本文链接:3.冰阔落 I老王喜欢喝冰阔落。初始时刻,桌面上有n杯阔落,编号为1到n。老王总想把其中一杯阔落倒到

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

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

分享考题
share