페이지

1199번: 오일러 회로

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


#include<cstdio>
const int MAX_N = 1e3;
int n, adj[MAX_N][MAX_N];
void dfs(int h) {
    for (int i = 0; i<n; i++) while (adj[h][i]) {
        adj[h][i]--;
        adj[i][h]--;
        dfs(i);
    }
    printf("%d ", h + 1);
}
int main() {
    scanf("%d", &n);
    for (int i = 0, c = 0; i<n; i++) {
        for (int j = 0; j<n; j++) {
            scanf("%d", &adj[i][j]);
            c += adj[i][j];
        }
        if (c & 1) {
            puts("-1");
            return 0;
        }
    }
    dfs(0);
    return 0;
}

댓글 없음 :

댓글 쓰기