#P1511. 2024.04.24-暑期实习-第三题-塔子哥的微服务群组
-
ID: 91
Type: Default
1000ms
256MiB
Tried: 192
Accepted: 31
Difficulty: 7
Uploaded By:
TaZi
Tags>BFS
2024.04.24-暑期实习-第三题-塔子哥的微服务群组
题目描述
上期我们聊到,你为了帮助塔子哥维护云服务器而大打出手。如今,云服务器已经平稳运行并给用户们提供了一系列不错的服务,但是塔子哥仍花了很多时间在运维和数据分析上。
更形式的,塔子哥为了调研微服务调用情况,对n个微服务调用数据进行了采集分析,微服务使用数字0至n−1进行编号,给你一个下标从0开始的数组edges,其中edges[i]表示存在一条从微服务i到微服务edges[i]的接口调用。
为了更好的维护,塔子哥将形成1个环的多个微服务称为微服务群组,一个微服务群组的所有微服务数量为L,能够访问到该微服务群组的微服务数量为V,这个微服务群组的内聚值H=L−V。
已知提供的数据中有1个或多个微服务群组,请按照内聚值H的结果从大到小的顺序对所有微服务群组(H相等时,取环中最大的数进行比较)排序,输出排在第一的做服务群组,输出时每个微服务群组输出的起始编号为环中最小的数。
输入描述
第一行输入n,表示有n个微服务
第二行为数组edges,其中edges[i]表示存在一条从微服务i到微服务edges[i]的接口调用,数字以空格分隔。
数据范围:
n == edges.length
2≤n≤105
0≤edges[i]≤n−1
输入保证edges[i]=i
输出描述
输出排在第一的微服务群组的编号数组,按照环的访问顺序输出,起始编号为环中最小的数,数字以空格分隔。
样例一
输入
4
3 3 0 2
输出
0 3 2
解释
0,3,2组成了微服务群组 (环)a,他的L值为3,对于a来说,只有编号为1的1个微服务可以访问到a,因此a的为1答案输出微服务群组为0 3 2
样例二
输入
12
2 6 10 1 6 0 3 0 5 4 5 8
输出
0 2 10 5
解释
1,6,3组成了微服务群组(环) a1,L1值为3,编号为4、9的2个微服务可以访问到a1,因此√1值为2,H1为L1V1 =1;
0,2,10,5组成了微服务群组 (环) a2,L2值为4,编号为7、8、11的3个微服务可以访问到2,因此v2值为3,H2为L2-V2=1;
先对比H值,H1=H2,H值相等;
再对比环中序号最大值,a1中最大数为6。a2中最大数为10,a2排前面,因此输出答案为:0 2 10 5
Limitation
1s, 1024KiB for each test case.
通知
扫码备注华为交流群~期待您的到来
- 湘ICP备2023007293号
- Worker 0, 22ms
- Powered by Hydro v4.14.1 Community