๐Ÿณ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;
            }
        }
    }