백준 14926번 Not Equal Java

: ) YOUNG·5일 전
1

알고리즘

목록 보기
436/441
post-thumbnail

백준 14926번 Not Equal Java

https://www.acmicpc.net/problem/14926

문제



생각하기


  • 그래프 문제

  • 오일러의 경로

  • 히어홀저 알고리즘



동작

완전 그래프(Complete Graph) 에서 최대 간선 수 int len = (N * (N - 1)) / 2;

isVisited[N][1] = isVisited[1][N] = true;를 통해서 순서대로 모두 방문할 수 있도록 한다.

해당 코드가 없으면 1 N에서 중단되고 더 이상 모든 간선을 탐색할 수 없습니다.


        int len = (N * (N - 1)) / 2;
        for (int i = 0; i < len; i++) {
            for (int j = 1; j <= N; j++) {
                if (cur == j || isVisited[cur][j]) continue;

                isVisited[cur][j] = isVisited[j][cur] = true;
                cur = j;
                break;
            }

            sb.append('a').append(cur).append(' ');
        }




결과


코드


Java

import java.io.*;

public class Main {

    // input
    private static BufferedReader br;

    // variables
    private static int N;
    private static boolean[][] isVisited;

    public static void main(String[] args) throws IOException {
        br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        input();

        bw.write(solve());
        bw.close();
    } // End of main()

    private static String solve() {
        StringBuilder sb = new StringBuilder();

        isVisited[N][1] = isVisited[1][N] = true;
        int cur = 0;

        int len = (N * (N - 1)) / 2;
        for (int i = 0; i < len; i++) {
            for (int j = 1; j <= N; j++) {
                if (cur == j || isVisited[cur][j]) continue;

                isVisited[cur][j] = isVisited[j][cur] = true;
                cur = j;
                break;
            }

            sb.append('a').append(cur).append(' ');
        }

        sb.append("a1");
        return sb.toString();
    } // End of solve()

    private static void input() throws IOException {
        N = Integer.parseInt(br.readLine());
        isVisited = new boolean[N + 1][N + 1];
    } // End of input()
} // End of Main class

0개의 댓글