[백준] 10451번 : 순열 사이클 - C

강재원·2022년 11월 24일
0

[코딩테스트] C/C++

목록 보기
189/200



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

#include<stdio.h>
#include<stdbool.h>

static int arr[1001];
static bool check[1001];
static int n;

static int dfs(int v){
    check[v]=true;
    int ans=0;
    
    for(int i=1;i<=n;i++){
        if(arr[v]==i && check[i]==false){
            dfs(i);
            ans=1;
        }
        else if(arr[v]==i && v==i) ans=1;
    }
    return ans;
}

int main() {
    int t;
    scanf("%d",&t);
    while(t-->0){
        scanf("%d",&n);
        int count=0;
        
        for(int i=1;i<=n;i++){
            scanf("%d",&arr[i]);
            check[i]=false;
        }
        for(int i=1;i<=n;i++){
            if(dfs(i)==1) count++;
        }
        printf("%d\n",count);
    }
}
profile
개념정리 & 문법 정리 & 알고리즘 공부

0개의 댓글