๐ณDev/Algorithm
[์๊ณ ๋ฆฌ์ฆ] 01. Graph
fortune.00
2021. 11. 21. 15:31
์ฒซ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๋ฅผ ์์ํ์ ๋, Graph ์ด๋ก ์ ๋ํด ๋ ธํธ์ ์ ๋ฆฌํ ๊ฒ์ ๊ฐ์ง๊ณ ์๋ค.
์ดํ์ java๋ก Graph๋ฅผ ์๋์ ๊ฐ์ด ๊ตฌํํ๋ค.
public class Graph {
private static int numOfVertex;
private static int numOfEdge;
public static Scanner input = new Scanner(System.in);
public Graph(int numOfVertex, int numOfEdge){
this.numOfVertex = numOfVertex;
this.numOfEdge = numOfEdge;
}
public static int[][] adjacencyMatrix() {
int[][] vertex = new int[numOfVertex][numOfVertex];
for (int i = 0; i < numOfVertex; i++)
vertex[input.nextInt()][input.nextInt()] = 1;
return vertex;
}
public static ArrayList[] adjacencyList() {
ArrayList<Integer> [] head = new ArrayList[numOfVertex];
for (int i = 0; i < numOfVertex; i++)
head[i] = new ArrayList<>();
for (int i = 0; i < numOfEdge; i++)
head[input.nextInt()].add(input.nextInt());
return head;
}
public static Node[] adjacencyMultiList() {
Node [] head = new Node[numOfVertex];
Node [] link = new Node[numOfVertex +1];
for (int p = 0; p < numOfVertex; p++)
link[p] = new Node(input.nextInt(), input.nextInt());
for (int p = 0; p < numOfVertex; p++){
link[p].i_link = link[input.nextInt()];
link[p].j_link = link[input.nextInt()];
}
for (int p = 0; p < numOfVertex; p++) {
head[p] = link[input.nextInt()];
}
return head;
}
private static class Node{
public boolean mark;
public int i, j;
public Node i_link, j_link;
public Node(int i, int j){
this.i = i;
this.j = j;
}
}
}