Open Jewan1120 opened 4 days ago
BFS
)
mn
)
ans
)의 최소값 구하기ans
)에서 mn인 개수 구하고, mn값인 후보 출력플로이드 와샬
BFS도 가능하지만 플로이드 와샬 문제였씀다!
=> 최대 친구사이(간선수) : N-1 => 다익스트라 사용시, O((N-1) log N) => N이 충분히 작으므로 완전탐색도 가능
회원의 수 <= 50
50 * (50 + 간선의 수)
O(N^3)
(50^3 : 가능)점수
: 특정 회원이 다른 모든 회원과 연결되기 위해 필요한 최단 거리 중에서 가장 먼 거리회장
: 점수가 가장 낮은 사람(가장 가까운 거리에 있는 사람 = 최단거리) 구해야 함조건
: 몇 사람을 통하면 모두가 서로알 수 있다 = 모든 회원(노드)가 연결되어 있음 -> 플로이드
회원의 수 <= 50
회원 1명 당 최대 간선수 N-1
> 50-1
회원 별로 모든 연결 간선을 찾으며 가중치 순으로 정렬하므로 O(N*(N-1)logN)
> 약 O(N^2logN)
노드 | 연결된 노드 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
1 | 2 | 0 | 1 | 2 | 2 | 3 |
2 | 1, 3, 4 | 1 | 0 | 1 | 1 | 2 |
3 | 4, 2, 5 | 2 | 1 | 0 | 1 | 1 |
4 | 2, 3, 5 | 2 | 1 | 1 | 0 | 1 |
5 | 3, 4 | 3 | 2 | 1 | 1 | 0 |
Node(연결된 친구,거리)
for(int friend : graph.get(person.index)){
if(table[friend] > table[person.index]+1){
table[friend] = table[person.index]+1;
queue.offer(new Node(friend,table[friend]));
}
}
각 회원들의 최고 가중치
중 점수가 가장 작은 사람
이 된다.