알고리즘/BOJ

백준 10451번 순열 사이클

꾸준함. 2018. 11. 2. 17:35

문제 링크입니다: https://www.acmicpc.net/problem/10451


간단한 DFS(Depth First Search) 알고리즘 문제였습니다.

flood fill 유형 문제에서 컴포넌트 개수 세듯이 하면 AC 받을 수 있습니다.


#include <iostream>

#include <cstring>

using namespace std;

 

const int MAX = 1000 + 1;

 

int N;

int arr[MAX];

bool visited[MAX];

 

void DFS(int node)

{

        visited[node] = true;

 

        if (!visited[arr[node]])

                 DFS(arr[node]);

}

 

int main(void)

{

        ios_base::sync_with_stdio(0);

        cin.tie(0);

        int T;

        cin >> T;

 

        for (int t = 0;t < T; t++)

        {

                 memset(visited, false, sizeof(visited));

                 cin >> N;

 

                 for (int i = 1; i <= N; i++)

                         cin >> arr[i];

 

                 int cnt = 0;

                 for (int i = 1; i <= N; i++)

                         //컴포넌트 개수

                         if (!visited[i])

                         {

                                 DFS(i);

                                 cnt++;

                         }

                 cout << cnt << "\n";

        }

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 2331번 반복수열  (5) 2018.11.02
백준 2038번 골롱 수열  (0) 2018.11.02
백준 2463번 비용  (0) 2018.11.02
백준 5532번 방학 숙제  (0) 2018.11.01
백준 12790번 Mini Fantasy War  (0) 2018.11.01