[백준] 31409 - 착신 전환 소동

안우진·2024년 2월 26일
0

백준

목록 보기
10/21

[문제]


https://www.acmicpc.net/problem/31409

[풀이]


모든 전화기는 자기 자신 또는 다른 전화기를 가르키고 있어야 한다.
모든 전화기가 사이클 내부에 포함되어야 하는 것은 아니다.
사이클이 만들어지지 않으려면 마지막 전화기는 자기 자신을 가르키고 있어야 한다.
즉, 모든 전화기는 자기 자신만 가르키지 않으면 모든 전화를 먹통으로 만들 수 있다.

[코드]


n = int(input())
a = [0] + list(map(int,input().split()))

ans=0
if a[1] == 1:
    a[1] = 2
    ans = 1
for i in range(2, n+1):
    if a[i] == i:
        a[i] = 1
        ans += 1
print(ans)
print(*a[1:])

0개의 댓글