n = int(input())
hirlanc = [0] + [int(i) for i in input().split()]
count = [-1] + n * [0]
state = [''] + n * ["U"]
stack = []
circle = []
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())
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 | 22000 KiB | ||||
| 3 | Accepted | 76ms | 22716 KiB | ||||
| 4 | Accepted | 68ms | 22096 KiB | ||||
| 5 | Accepted | 61ms | 22196 KiB | ||||
| 6 | Accepted | 68ms | 22248 KiB | ||||
| 7 | Accepted | 71ms | 22920 KiB | ||||
| 8 | Accepted | 67ms | 22440 KiB | ||||
| 9 | Accepted | 65ms | 22740 KiB | ||||
| 10 | Accepted | 68ms | 22760 KiB | ||||
| 11 | Accepted | 63ms | 22876 KiB | ||||
| 12 | Accepted | 70ms | 23012 KiB | ||||
| subtask3 | 0/18 | ||||||
| 13 | Time limit exceeded | 586ms | 43768 KiB | ||||
| 14 | Accepted | 326ms | 89240 KiB | ||||
| 15 | Runtime error | 157ms | 44904 KiB | ||||
| 16 | Runtime error | 157ms | 44884 KiB | ||||
| 17 | Runtime error | 165ms | 44728 KiB | ||||
| 18 | Runtime error | 157ms | 44840 KiB | ||||
| 19 | Runtime error | 158ms | 44880 KiB | ||||
| 20 | Runtime error | 138ms | 44708 KiB | ||||
| 21 | Runtime error | 158ms | 44744 KiB | ||||
| 22 | Runtime error | 137ms | 44736 KiB | ||||
| subtask4 | 0/42 | ||||||
| 23 | Accepted | 39ms | 19668 KiB | ||||
| 24 | Accepted | 68ms | 22000 KiB | ||||
| 25 | Accepted | 76ms | 22716 KiB | ||||
| 26 | Accepted | 68ms | 22096 KiB | ||||
| 27 | Accepted | 61ms | 22196 KiB | ||||
| 28 | Accepted | 68ms | 22248 KiB | ||||
| 29 | Accepted | 71ms | 22920 KiB | ||||
| 30 | Accepted | 67ms | 22440 KiB | ||||
| 31 | Accepted | 65ms | 22740 KiB | ||||
| 32 | Accepted | 68ms | 22760 KiB | ||||
| 33 | Accepted | 63ms | 22876 KiB | ||||
| 34 | Accepted | 70ms | 23012 KiB | ||||
| 35 | Time limit exceeded | 586ms | 43768 KiB | ||||
| 36 | Accepted | 326ms | 89240 KiB | ||||
| 37 | Runtime error | 157ms | 44904 KiB | ||||
| 38 | Runtime error | 157ms | 44884 KiB | ||||
| 39 | Runtime error | 165ms | 44728 KiB | ||||
| 40 | Runtime error | 157ms | 44840 KiB | ||||
| 41 | Runtime error | 158ms | 44880 KiB | ||||
| 42 | Runtime error | 138ms | 44708 KiB | ||||
| 43 | Runtime error | 158ms | 44744 KiB | ||||
| 44 | Runtime error | 137ms | 44736 KiB | ||||
| 45 | Time limit exceeded | 587ms | 43680 KiB | ||||
| 46 | Time limit exceeded | 587ms | 43824 KiB | ||||
| 47 | Time limit exceeded | 584ms | 43968 KiB | ||||
| 48 | Runtime error | 153ms | 44988 KiB | ||||
| 49 | Runtime error | 153ms | 44752 KiB | ||||
| 50 | Runtime error | 136ms | 44728 KiB | ||||
| 51 | Runtime error | 140ms | 44844 KiB | ||||
| 52 | Runtime error | 137ms | 44804 KiB | ||||
| 53 | Runtime error | 156ms | 44752 KiB | ||||
| 54 | Runtime error | 156ms | 44924 KiB | ||||