from sys import setrecursionlimit
n = int(input())
hirlanc = [0] + [int(i) for i in input().split()]
count = [-1] + n * [0]
state = [''] + n * ["U"]
stack = []
circle = []
setrecursionlimit(10000)
def update(cur):
global circle
if "A" in state[cur]:
if "E" not in state[hirlanc[cur]]:
stack.append(cur)
while stack and stack[-1] not in circle:
circle.append(stack.pop())
if stack:
stack.pop()
for i in circle:
count[i] = len(circle)
state[i] = "E"
circle = []
if stack:
update(stack[-1])
else:
count[cur] = count[hirlanc[cur]] + 1
state[cur] = "E"
if stack:
update(stack.pop())
elif "E" in state[cur]:
if stack:
last = stack.pop()
count[last] = count[cur] + 1
state[last] = "E"
update(last)
else:
state[cur] = "A"
stack.append(cur)
update(hirlanc[cur])
while 0 in count:
idx = count.index(0)
update(idx)
# print(f'stack: {stack}, circle: {circle}, state: {state}, count: {count}')
mx = max(count)
print(count.index(mx), mx)
| Subtask | Sum | Test | Verdict | Time | Memory | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Accepted | 45ms | 19692 KiB | ||||
| subtask2 | 20/20 | ||||||
| 2 | Accepted | 68ms | 22160 KiB | ||||
| 3 | Accepted | 75ms | 22680 KiB | ||||
| 4 | Accepted | 61ms | 22236 KiB | ||||
| 5 | Accepted | 59ms | 22228 KiB | ||||
| 6 | Accepted | 68ms | 22128 KiB | ||||
| 7 | Accepted | 64ms | 22948 KiB | ||||
| 8 | Accepted | 68ms | 22288 KiB | ||||
| 9 | Accepted | 74ms | 22768 KiB | ||||
| 10 | Accepted | 61ms | 22860 KiB | ||||
| 11 | Accepted | 68ms | 23004 KiB | ||||
| 12 | Accepted | 68ms | 23144 KiB | ||||
| subtask3 | 0/18 | ||||||
| 13 | Time limit exceeded | 587ms | 43760 KiB | ||||
| 14 | Accepted | 367ms | 89236 KiB | ||||
| 15 | Time limit exceeded | 523ms | 55444 KiB | ||||
| 16 | Time limit exceeded | 589ms | 62352 KiB | ||||
| 17 | Runtime error | 212ms | 59400 KiB | ||||
| 18 | Runtime error | 193ms | 59288 KiB | ||||
| 19 | Runtime error | 194ms | 59280 KiB | ||||
| 20 | Runtime error | 194ms | 59288 KiB | ||||
| 21 | Runtime error | 216ms | 59288 KiB | ||||
| 22 | Runtime error | 214ms | 59288 KiB | ||||
| subtask4 | 0/42 | ||||||
| 23 | Accepted | 43ms | 19652 KiB | ||||
| 24 | Accepted | 68ms | 22160 KiB | ||||
| 25 | Accepted | 75ms | 22680 KiB | ||||
| 26 | Accepted | 61ms | 22236 KiB | ||||
| 27 | Accepted | 59ms | 22228 KiB | ||||
| 28 | Accepted | 68ms | 22128 KiB | ||||
| 29 | Accepted | 64ms | 22948 KiB | ||||
| 30 | Accepted | 68ms | 22288 KiB | ||||
| 31 | Accepted | 74ms | 22768 KiB | ||||
| 32 | Accepted | 61ms | 22860 KiB | ||||
| 33 | Accepted | 68ms | 23004 KiB | ||||
| 34 | Accepted | 68ms | 23144 KiB | ||||
| 35 | Time limit exceeded | 587ms | 43760 KiB | ||||
| 36 | Accepted | 367ms | 89236 KiB | ||||
| 37 | Time limit exceeded | 523ms | 55444 KiB | ||||
| 38 | Time limit exceeded | 589ms | 62352 KiB | ||||
| 39 | Runtime error | 212ms | 59400 KiB | ||||
| 40 | Runtime error | 193ms | 59288 KiB | ||||
| 41 | Runtime error | 194ms | 59280 KiB | ||||
| 42 | Runtime error | 194ms | 59288 KiB | ||||
| 43 | Runtime error | 216ms | 59288 KiB | ||||
| 44 | Runtime error | 214ms | 59288 KiB | ||||
| 45 | Time limit exceeded | 583ms | 43720 KiB | ||||
| 46 | Time limit exceeded | 586ms | 43696 KiB | ||||
| 47 | Time limit exceeded | 584ms | 44056 KiB | ||||
| 48 | Time limit exceeded | 592ms | 47028 KiB | ||||
| 49 | Time limit exceeded | 592ms | 60464 KiB | ||||
| 50 | Runtime error | 405ms | 59944 KiB | ||||
| 51 | Runtime error | 194ms | 59284 KiB | ||||
| 52 | Runtime error | 386ms | 59800 KiB | ||||
| 53 | Runtime error | 192ms | 59304 KiB | ||||
| 54 | Runtime error | 215ms | 59284 KiB | ||||