n : 정점의 수
m : 간선의 수
0 - 1 - 2
라고 가정하면
입력을
0
1
1
2
로 해야한다.
a[0] 1
a[1] 0 2
a[2] 1
public static void main(String[] args) {
int n = 5;
int m = 4;
Scanner sc = new Scanner(System.in);
ArrayList<Integer>[] a = (ArrayList<Integer>[]) new ArrayList[n];
for (int i = 0; i < n; i++) {
a[i] = new ArrayList<>();
}
for (int i = 0; i < m; i++) {
int v1 = sc.nextInt();
int v2 = sc.nextInt();
a[v1].add(v2);
a[v2].add(v1);
}
Boolean[] visited = new Boolean[a.length];
for(int i = 0; i < visited.length; i++) {
visited[i] = false;
}
dfs(a,visited,0); //0자리는 시작정점으로 정할것을 넣자
}
public static void dfs(ArrayList<Integer>[] a ,Boolean[] visited, int v){
if(visited[v]) return;
System.out.println("v : " + v);
visited[v] = true;
for(int vv : a[v]){
dfs(a,visited,vv);
}
}
'Study' 카테고리의 다른 글
[2019 정보처리기사 실기 3회] 공부 방법 및 시험 후기 및 자료 (4) | 2019.11.07 |
---|---|
Thread란? Process와 Thread의 차이/ Thread Pool? (0) | 2019.05.22 |
(Java Greedy) 문자열안에 포함된 가장 긴 팰린드롬(palindrome)문자열 (0) | 2019.03.15 |
(JAVA) JAVA Stack을 활용하여 infix-postfix 변환 및 계산 (0) | 2019.03.15 |
면접대비 용어정리 (0) | 2019.02.11 |
댓글