241502026-02-04 23:21:2442Ültetéspypy3Elfogadva 75/7596ms24492 KiB
from sys import stdin
input=stdin.readline

def solv():
    N = int(input())
    graph = [0]+list(map(int,input().split()))
    ginv = [[] for i in range(N+1)]
    for i in range(1,N+1):
        ginv[graph[i]].append(i)
    ord=sorted(range(1,N+1),key=lambda x: len(ginv[x]))
    visited = {ord[0]}
    cur=[ord[0]]
    while graph[cur[-1]] not in visited:
        visited.add(graph[cur[-1]])
        cur.append(graph[cur[-1]])
    if len(cur) == N:
        print(N-1)
        rr=[0]*N
        for i in range(N):
            rr[cur[i]-1]=i+1
        print(*rr)
        return
    tmp = [cur[0]]
    while ginv[tmp[-1]] and ginv[tmp[-1]][-1] not in visited:
        tmp.append(ginv[tmp[-1]].pop())
        visited.add(tmp[-1])
    res=tmp[:0:-1]+cur
    r=len(res)-1
    for start in ord:
        if start in visited:
            continue
        visited.add(start)
        cur=[start]
        while graph[cur[-1]] not in visited:
            visited.add(graph[cur[-1]])
            cur.append(graph[cur[-1]])
        tmp = [cur[0]]
        while ginv[tmp[-1]] and ginv[tmp[-1]][-1] not in visited:
            tmp.append(ginv[tmp[-1]].pop())
            visited.add(tmp[-1])
        RES=tmp[:0:-1]+cur
        r+=len(RES)-1
        res += RES
    print(r)
    rr=[0]*N
    for i in range(N):
        rr[res[i]-1]=i+1
    print(*rr)

solv()
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva43ms19688 KiB
2Elfogadva79ms23724 KiB
subtask25/5
3Elfogadva39ms19712 KiB
4Elfogadva43ms19848 KiB
5Elfogadva39ms19632 KiB
6Elfogadva43ms19640 KiB
7Elfogadva39ms19712 KiB
subtask35/5
8Elfogadva39ms19920 KiB
9Elfogadva39ms19648 KiB
10Elfogadva46ms19652 KiB
11Elfogadva43ms19684 KiB
12Elfogadva39ms19888 KiB
subtask45/5
13Elfogadva39ms19776 KiB
14Elfogadva48ms21080 KiB
15Elfogadva48ms21176 KiB
16Elfogadva43ms21444 KiB
17Elfogadva48ms21224 KiB
subtask510/10
18Elfogadva43ms21064 KiB
19Elfogadva56ms21436 KiB
20Elfogadva57ms21416 KiB
21Elfogadva50ms21532 KiB
22Elfogadva61ms21480 KiB
23Elfogadva41ms21084 KiB
24Elfogadva41ms21068 KiB
25Elfogadva56ms21484 KiB
26Elfogadva74ms24492 KiB
27Elfogadva67ms24300 KiB
subtask610/10
28Elfogadva57ms21656 KiB
29Elfogadva64ms22436 KiB
30Elfogadva64ms22440 KiB
31Elfogadva71ms22856 KiB
32Elfogadva64ms23268 KiB
33Elfogadva65ms23872 KiB
34Elfogadva76ms23892 KiB
35Elfogadva74ms24308 KiB
36Elfogadva65ms24220 KiB
37Elfogadva76ms24264 KiB
subtask740/40
38Elfogadva50ms21480 KiB
39Elfogadva78ms23216 KiB
40Elfogadva75ms22924 KiB
41Elfogadva82ms23220 KiB
42Elfogadva75ms23184 KiB
43Elfogadva93ms23748 KiB
44Elfogadva90ms24284 KiB
45Elfogadva79ms24292 KiB
46Elfogadva79ms24296 KiB
47Elfogadva90ms23956 KiB
48Elfogadva89ms24036 KiB
49Elfogadva79ms24044 KiB
50Elfogadva93ms24380 KiB
51Elfogadva86ms24248 KiB
52Elfogadva89ms23924 KiB
53Elfogadva79ms24084 KiB
54Elfogadva93ms24296 KiB
55Elfogadva81ms23952 KiB
56Elfogadva82ms23956 KiB
57Elfogadva96ms23940 KiB