프로그래밍/JAVA
[Java] 자바로 인접행렬, 인접리스트 구현하기
노력의천재
2022. 10. 13. 11:57
작성 코드
public class Main {
static int n, m;
static int[][] arr;
static ArrayList<Integer>[] list;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
/* 배열 & 리스트 초기화 */
arr = new int[n + 1][n + 1];
list = new ArrayList[n + 1];
for (int i = 1; i <= n; i++) {
list[i] = new ArrayList<>();
}
/* 인접행렬 & 인접리스트 생성 */
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
int from = Integer.parseInt(st.nextToken());
int to = Integer.parseInt(st.nextToken());
arr[from][to] = 1;
arr[to][from] = 1;
list[from].add(to);
list[to].add(from);
}
/* 인접행렬 출력 */
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
System.out.println("================================================");
/* 인접리스트 출력 */
for (int i = 1; i <= n; i++) {
System.out.print(i + " : ");
for (int j = 0; j < list[i].size(); j++) {
System.out.print(list[i].get(j) + " ");
}
System.out.println();
}
}
}
입력 값
5 7
1 4
4 1
1 3
4 3
3 5
4 5
4 2
출력 결과
0 0 1 1 0
0 0 0 1 0
1 0 0 1 1
1 1 1 0 1
0 0 1 1 0
================================================
1 : 4 4 3
2 : 4
3 : 1 4 5
4 : 1 1 3 5 2
5 : 3 4