알고리즘
백준 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;
}