1일1알

백준 3182번 한동이는 공부가 하기 싫어! C++ 본문

알고리즘

백준 3182번 한동이는 공부가 하기 싫어! C++

영춘권의달인 2023. 6. 7. 17:37

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

 

3182번: 한동이는 공부가 하기 싫어!

H-ALGO 회원인 한동이는 공부하는것을 좋아하지 않는다. 하지만 약삭빠르게도 한동이는 공부도 하지 않으면서 어려운 시험을 통과하고 싶어한다. 그러던 와중 어느 날, 한동이의 동기가 한동이에

www.acmicpc.net

 

#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <list>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <limits.h>

using namespace std;
using int64 = long long;

int n;
vector<int> v;
vector<bool> visited;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    cin >> n;
    v = vector<int>(n + 1, -1);
    for (int i = 1; i <= n; i++) {
        int num;
        cin >> num;
        v[i] = num;
    }
    int ans = -1;
    int maxLen = -1;
    for (int i = 1; i <= n; i++) {
        visited = vector<bool>(n + 1, false);
        int curr = i;
        int cnt = 0;
        visited[curr] = true;
        while (true) {
            if (v[curr] == -1) break;
            curr = v[curr];
            if (visited[curr]) break;
            visited[curr] = true;
            cnt++;
        }
        if (cnt > maxLen) {
            maxLen = cnt;
            ans = i;
        }
    }
    cout << ans;
}