반응형
package algo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class BJ_11403 {
static int map[][];
static int N;
static Queue q = new LinkedList();
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st ;
N = Integer.parseInt(br.readLine());
map = new int[N][N];
int tem;
for(int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine());
for(int j=0; j<N; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
}
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
if(map[i][j] ==1) { //간선 연결되어 있을 때
q.add(j); //q에 넣어주기 ex) i=0 q={3}, i=1 q={6}, i=3 q={5,6} ...
}
}
while(!q.isEmpty()) {//큐가 빌 때까지 한 행씩 본다 i=0 ~ N
tem =q.poll(); // tem에 q값 넣어주기
BFS(i,tem);
}
}
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
System.out.print(map[i][j]+" ");
}
System.out.println();
}
}
private static void BFS(int x, int tem) {
map[x][tem] = 1; // 여기는 당연히 1임 , map[0][5], map[0][6] 도 연결해준다
for(int i=0; i<N; i++) {
if(map[tem][i] == 1 && map[x][i] != 1) {// x=0, tem=3 이면 , 노드 0,3 이 연결된 거니깐, 이제 3과 연결된 노드를 찾기
//map[3][4] , map[3][5] 일 때 연결 되있으니깐, 0,3,4,5,가 연결됨
q.add(i); //갈 수 있는 길이라 큐에 추가한다
}
}
}
}
정답률 52%인데 나는 너무 어려운데 ............
더 열심히 공부하기...................................................ㅎㅇㅌㅎㅇㅌ
반응형
'백준알고리즘' 카테고리의 다른 글
백준 로또 6603번 JAVA DFS 순환 (0) | 2020.07.06 |
---|---|
백준 1914 하노이 탑 JAVA (0) | 2020.06.29 |
백준 1927 Java 최소 힙(Heap) (0) | 2020.06.09 |
백준 9252번 LCS 2 런타임 에러 (0) | 2020.06.03 |
백준 JAVA 11812 K진 트리 (0) | 2020.05.10 |
댓글