Skip to content

Commit

Permalink
week14_0617
Browse files Browse the repository at this point in the history
  • Loading branch information
Kong-E committed Jun 18, 2024
1 parent 1321a3b commit a6d339a
Show file tree
Hide file tree
Showing 3 changed files with 141 additions and 2 deletions.
4 changes: 2 additions & 2 deletions week12_0605/오목.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ static boolean find(int[][] board, int row, int col, int target) {
return false;
}

static boolean inRange(int num) {
return num <
static boolean inRange(int a, int b, int c, int d, int e, int f) {
return a < 19 && b < 19 && c < 19 && d < 19 && e < 19 && f < 19 && a >= 0 && b >= 0 && c >= 0 && d >= 0 && e >= 0 && f >= 0;
}
}
63 changes: 63 additions & 0 deletions week14_0617/최소비용구하기.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package week14_0617;

import java.io.*;
import java.util.*;

public class 최소비용구하기 {
static class Node {
int vertex;
int dist;

Node(int vertex, int dist) {
this.vertex = vertex;
this.dist = dist;
}
}

public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int M = Integer.parseInt(br.readLine());

ArrayList<ArrayList<Node>> graph = new ArrayList<>();
for (int i = 0; i <= N; i++) {
graph.add(new ArrayList<>());
}

for (int i = 0; i < M; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());
int cost = Integer.parseInt(st.nextToken());

graph.get(start).add(new Node(end, cost));
}

StringTokenizer st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());

int[] dist = new int[N + 1];
Arrays.fill(dist, Integer.MAX_VALUE);
dist[start] = 0;

PriorityQueue<Node> pq = new PriorityQueue<>((o1, o2) -> o1.dist - o2.dist);
pq.offer(new Node(start, 0));

while (!pq.isEmpty()) {
Node curNode = pq.poll();

if (dist[curNode.vertex] < curNode.dist) continue;

for (Node adjNode : graph.get(curNode.vertex)) {
if (dist[adjNode.vertex] > curNode.dist + adjNode.dist) {
dist[adjNode.vertex] = curNode.dist + adjNode.dist;

pq.offer(new Node(adjNode.vertex, dist[adjNode.vertex]));
}
}
}

System.out.println(dist[end]);
}
}
76 changes: 76 additions & 0 deletions week14_0617/특정거리의도시찾기.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package week14_0617;

import java.io.*;
import java.util.*;

public class 특정거리의도시찾기 {
static class Node {
int vertex;
int dist;

Node(int vertex, int dist) {
this.vertex = vertex;
this.dist = dist;
}
}

public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;

st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken()); // 도시의 개수
int M = Integer.parseInt(st.nextToken()); // 도로의 개수
int K = Integer.parseInt(st.nextToken()); // 거리 정보
int X = Integer.parseInt(st.nextToken()); // 출발 도시 번호

ArrayList<ArrayList<Node>> graph = new ArrayList<>();

for (int i = 0; i <= N; i++) {
graph.add(new ArrayList<>());
}

for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());

graph.get(a).add(new Node(b, 1));
}

int[] dist = new int[N + 1];

Arrays.fill(dist, Integer.MAX_VALUE);
dist[X] = 0;

PriorityQueue<Node> pq = new PriorityQueue<>((o1, o2) -> o1.dist - o2.dist);
pq.add(new Node(X, 0));

while (!pq.isEmpty()) {
Node curNode = pq.remove();

if (dist[curNode.vertex] < curNode.dist) continue;

for (Node adjNode : graph.get(curNode.vertex)) {
if (dist[adjNode.vertex] > curNode.dist + adjNode.dist) {
dist[adjNode.vertex] = curNode.dist + adjNode.dist;

pq.add(new Node(adjNode.vertex, dist[adjNode.vertex]));
}
}
}

for (int i = 1; i < dist.length; i++) {
if (dist[i] == K) {
sb.append(i).append("\n");
}
}

if (sb.length() == 0) {
System.out.println(-1);
} else {
System.out.println(sb);
}
}
}

0 comments on commit a6d339a

Please sign in to comment.