#include <iostream>
#include <algorithm>
#include <vector>
#include <string.h>
int N = 0;
int arr[101] = {};
int visit[101] = {};
std::vector<int> vec = {};
void DFS(int iStart, int iCur)
{
if (!visit[iCur])
{
visit[iCur] = iStart;
DFS(iStart, arr[iCur]);
}
else if (iCur == iStart)
{
vec.push_back(iStart);
return;
}
}
int main()
{
std::cin >> N;
for (int i = 1; i <= N; ++i)
{
std::cin >> arr[i];
}
for (int i = 1; i <= N; ++i)
{
DFS(i, i);
memset(visit, false, sizeof(visit));
}
std::cout << vec.size() << "\n";
for (int i = 0; i < vec.size(); ++i)
{
std::cout << vec[i] << "\n";
}
return 0;
}
처음에는 한개의 세트로 묶어서 성공하면
그 세트만 보내는 걸로 했더니
여러 개의 세트가 전부 성공했을 경우 실패하게 되었다.
그래서 하나씩 하는걸로 실행!
'오늘의 알고리즘' 카테고리의 다른 글
[C++]백준 19941 햄버거 분배 (0) | 2022.07.12 |
---|---|
[C++] 백준 9935 문자열 폭발 (0) | 2022.06.22 |
[C++] 백준 2304 창고 다각형 (0) | 2022.06.20 |
[C++] 백준 11501 주식 (0) | 2022.06.18 |
[C++] 백준 4179 불! (0) | 2022.06.18 |