백준/실버

[백준] 실버1-효율적인 해킹 C++ 1325번

taene_ 2025. 2. 24. 15:53

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

 

// 범위가 [1~10,000] 이므로 배열의 설정과 초기화는 모두 10001로 해줘야 한다.

#include <iostream>
#include <vector>
using namespace std;

int N, M;
int ret[10001];
int visited[10001];
vector<int> v[10001];

int dfs(int com)
{
	int cnt = 1;
	visited[com] = 1;

	for (auto it : v[com])
	{
		if (visited[it]) continue;
		cnt += dfs(it);
	}

	return cnt;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	cin >> N >> M;
	for (int i = 0; i < M; i++)
	{
		int a, b;
		cin >> a >> b;
		v[b].push_back(a);
	}

	int mx = 0;
	for (int i = 1; i <= N; i++)
	{
		//fill(&visited[0], &visited[0] + 10001, 0);
		memset(visited, 0, sizeof(visited));
		ret[i] = dfs(i);
		if (mx <= ret[i])
			mx = ret[i];
	}

	for (int i = 1; i <= N; i++)
	{
		if (mx == ret[i])
			cout << i << ' ';
	}

	return 0;
}