BOJ#4191 Dominos 2
* 문제
* 풀이
어렵지 않은 문제였습니다.
풀이는 아래 코드로 대체합니다.
* 나의 코드
https://github.com/stack07142/BOJ/blob/master/BOJ%234191/src/Main.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
static ArrayList<ArrayList<Integer>> edge;
static boolean[] visited;
static int ans = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
// Test Case Loop
while (T-- > 0) {
// Input
edge = new ArrayList<>();
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int l = Integer.parseInt(st.nextToken());
visited = new boolean[n + 1];
for (int i = 0; i < n + 1; i++) {
edge.add(new ArrayList<>());
}
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
edge.get(Integer.parseInt(st.nextToken())).add(Integer.parseInt(st.nextToken()));
}
ans = 0;
for (int i = 0; i < l; i++) {
knockDominos(Integer.parseInt(br.readLine()));
}
System.out.println(ans);
}
}
static void knockDominos(int domino) {
if (visited[domino]) return;
ans++;
visited[domino] = true;
for (int i = 0; i < edge.get(domino).size(); i++) {
knockDominos(edge.get(domino).get(i));
}
}
}
'Algorithm > 그래프 탐색' 카테고리의 다른 글
BOJ#1613 역사 (0) | 2017.10.06 |
---|---|
BOJ#2593 엘리베이터 (0) | 2017.10.02 |
BOJ#2412 암벽 등반 (0) | 2017.09.10 |
BOJ#1963 소수 경로 (0) | 2017.09.05 |
BOJ#1890 점프 (0) | 2017.07.24 |