gimmickbutreal
[백준/자바] 특정 거리의 도시 찾기 - Java 18352 본문
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
package graph;
import java.util.*;
public class 특정거리의도시찾기 {
static int n,m,k,x;
static int visited[];
static ArrayList<Integer>[] graph;
static List<Integer> ans;
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
n = sc.nextInt(); // 노드 수
m = sc.nextInt(); // 간선 수
k = sc.nextInt(); // 목표 거리
x = sc.nextInt(); // 시작점
graph = new ArrayList[n+1]; // 그래프 데이터 저장
ans = new ArrayList<>(); // 정답
for (int i=1; i<=n; i++){
graph[i] = new ArrayList<Integer>(); // 그래프 리스트의 ArrayList 초기화
// 노드 개수만큼 ArrayList 생성
}
for (int i=1; i<=m; i++){
int s = sc.nextInt();
int e = sc.nextInt();
graph[s].add(e);
System.out.println();
System.out.println("그래프 데이터 저장 : " + graph[s]);
}
visited = new int[n+1]; // 방문 배열 초기화
for(int i=0; i<=n; i++){
visited[i] = -1;
// 방문 배열을 만듦
}
bfs(x); // 시작점부터 bfs 시작
for (int i=0; i<=n; i++){
if(visited[i]==k){
ans.add(i);
}
System.out.println("ans : " + ans);
}
if (ans.isEmpty()) {
System.out.println("-1"); //
} else{
Collections.sort(ans); // 정답을 오름차순으로 출력
for (int temp : ans){
System.out.println(temp);
}
}
}
private static void bfs(int node){
Queue<Integer> queue = new LinkedList<>();
queue.add(node);
visited[node]++; // visited 배열에 현재 노드 방문 기록하기
while (!queue.isEmpty()) {
int now_node = queue.poll();
for (int destination : graph[now_node]){
System.out.println("now_node : " + now_node);
// 큐에 데이터 삽입하고 visited 배열에 방문 거리 기록
if (visited[destination]==-1){
visited[destination] = visited[now_node] + 1;
queue.add(destination);
}
System.out.println("visited[" +destination +"] : " + visited[destination]);
System.out.println("queue : " + queue);
System.out.println("-------------------------------");
}
}
}
}
|
cs |
https://www.acmicpc.net/problem/18352
'Algorithm > Java' 카테고리의 다른 글
[프로그래머스/자바] 피로도 - DFS (0) | 2023.04.30 |
---|---|
[프로그래머스/자바] 여행경로 - DFS (0) | 2023.04.19 |
[백준/자바] DFS와BFS - Java 1260 (0) | 2023.03.05 |
[프로그래머스/자바] 타겟 넘버 - Java (0) | 2023.02.22 |
이클립스 패키지 구조 바꾸기 (0) | 2023.02.05 |