|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
import java.util.*;
class Solution {
int[][] arr;
public int solution(int n, int[][] wires) {
int answer = n;
arr= new int[n+1][n+1];
for(int i=0;i<wires.length;i++){
arr[wires[i][0]][wires[i][1]]=1;
arr[wires[i][1]][wires[i][0]]=1;
}
//모든 간선 한번씩 끊어서 비교.
for(int i=0;i<wires.length;i++){
arr[wires[i][0]][wires[i][1]]=0;
arr[wires[i][1]][wires[i][0]]=0;
int start=wires[i][0];
answer=Math.min(answer,bfs(n,start));
arr[wires[i][0]][wires[i][1]]=1;
arr[wires[i][1]][wires[i][0]]=1;
}
return answer;
}
public int bfs(int n, int start){
Queue<Integer> q=new LinkedList<>();
int[] visited=new int[n+1];
int cnt=1;
q.add(start);
visited[start]=1;
while(!q.isEmpty()){
int cur=q.poll();
for(int i=1;i<=n;i++){
if( (arr[cur][i]==1) && (visited[i]==0) ){
cnt++;
visited[i]=1;
q.add(i);
}
}
}
return Math.abs(n-2*cnt);
}
}
|
cs |
출처:https://school.programmers.co.kr/learn/courses/30/lessons/86971
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [c++] 최고의 집합 (0) | 2022.09.18 |
|---|---|
| [JAVA] n-queen (0) | 2022.09.16 |
| [JAVA] 모음사전 (0) | 2022.09.16 |
| [JAVA] 게임 맵 최단거리 (0) | 2022.09.16 |
| [JAVA] 이진 변환 반복하기 (0) | 2022.09.14 |