문제 링크: https://www.acmicpc.net/problem/3182

 

선배들의 지목 관계가 그래프로 나옵니다. 모든 노드부터 탐색을 시작해서 방문한 노드 수를 세서 업데이트 해주면 됩니다.

하나 이상의 정답이 있을 때 번호가 작은 선배를 출력해야 하는데, 번호가 작은 노드부터 탐색을 시도해보면 이 조건은 자연히 만족됩니다

#include <bits/stdc++.h>
using namespace std;


int next_person[1000];
bool visited[1000];

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

	int n;
	cin >> n;
	for (int i = 0; i < n; ++i) {
		int to;
		cin >> to;
		--to;
		next_person[i] = to;
	}

	int meet=0;
	int min_idx=0;

	for (int i = 0; i < n; ++i) {
		memset(visited, 0, sizeof(visited));

		int current = i;
		int cnt = 0;
		while (!visited[current]) {
			visited[current] = true;
			current = next_person[current];
			++cnt;
		}

		if (cnt > meet) {
			meet = cnt;
			min_idx = i;
		}
	}

	cout << min_idx+1;
	
	return 0;
}
반응형

'Online Judge > 백준' 카테고리의 다른 글

[백준][C++] 1662: 압축  (0) 2020.08.01
[백준][C++] 5719: 거의 최단 경로  (0) 2020.08.01
[백준][C++] 3181: 줄임말 만들기  (0) 2020.07.31
[백준][C++] 3184: 양  (0) 2020.07.31
[백준][C++] 19539: 사과나무  (0) 2020.07.31