Algorithm/BOJ
[ BOJ ] 1325 / 효율적인 해킹
jennyf
2022. 7. 10. 13:28
문제
회사를 해킹하려고 합니다.
회사는 N개의 컴퓨터로 이루어져 있습니다.
한 번의 해킹으로 여러 개의 컴퓨터를 해킹할 수 있는 컴퓨터를 해킹하려고 합니다.
컴퓨터는 신뢰하는 관계, 신뢰하지 않는 관계로 이루어져 있습니다.
A가 B를 신뢰하는 경우에는 B를 해킹하면 A도 해킹할 수 있는 소리입니다
- A → B 이런 상황이면 화살표를 향한 쪽의 컴퓨터를 해킹해야합니다.
이 회사의 컴퓨터의 신뢰하는 관계가 주어졌을 때, 한 번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터의 번호를 출력하는 프로그램을 작성하세요.
Input
첫 째줄에, n과 m이 들어옵니다
둘 째줄에 m개의 줄에 신뢰하는 관계가 A B 와 같은 형식으로 들어옵니다.
이때 A B 는 A가 B를 신뢰한다는 것을 의미합니다.
컴퓨터는 1번부터 N번까지 번호가 하나씩 매겨져 있습니다.
Output
한 번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터의 번호를 오름차순으로 출력합니다.
내 생각
- 5 4가 들어왔습니다.
- 4개의 줄에 신뢰하는 관계가 들어옵니다.
- 3 → 1 : 1을 해킹하면 3도 해킹이 됩니다.
- 3 → 2 : 2를 해킹하면 3도 해킹이 됩니다.
- 4→ 3 : 3을 해킹하면 4도 해킹이 됩니다.
- 5 → 3 : 3을 해킹하면 5도 해킹이 됩니다.
- 이 연결 관계를 어떻게 그래프로 표현할 것인가?
참고
일반적인 그래프 탐색 문제입니다.
BFS 를 이용하여 풀 수 있습니다.
Code