const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let [n, ...inputs] = fs
.readFileSync(filePath)
.toString()
.trim()
.split("\n")
.map(Number);
inputs.unshift(0);
let visited = new Array(n + 1).fill(0);
let result = [];
const dfs = (i) => {
if (visited[i] == 1) { // 방문한 걸 다시 방문한 거는 사이클?이 있는 거니까..
result.push(i);
return;
}
visited[i] = 1;
dfs(inputs[i]);
};
for (let i = 1; i <= n; i++) {
dfs(i);
visited.fill(0); // visited 초기화
}
let r = Array.from(new Set(result));
console.log(r.length);
console.log(r.sort((a, b) => a - b).join("\n"));
DFS인듯 DFS 아닌 DFS로 풀었다. ㅋㅋㅋㅋ 맨처음에 4퍼에서 틀렸습니다가 나왔었는데, 결과 출력에서 정렬을 해주니 맞았다.