https://www.acmicpc.net/problem/1199
양방향그래프 오일러서킷 코드기록용
<문제설명>
오일러서킷 존재하면 출력, 없으면 -1출력
<풀이>
오일러트레일은 무시해야 함. ->차수가 홀수인 정점이 없으면 오일러서킷 존재함
<코드>
int adj[MAX][MAX], n, deg[MAX];
bool odd;
vector<int> ans;
void euler(int u) {
for (int v = 0; v < n; v++) {
while (adj[u][v] > 0) {
adj[u][v]--;
adj[v][u]--;
euler(v);
}
}
ans.push_back(u);
}
int main() {
FAST;
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> adj[i][j];
deg[i] += adj[i][j];
}
if (deg[i] % 2) odd = true;
}
if (odd)
cout << -1 << '\n';
else {
for (int i = 0; i < n; i++) if (deg[i]) {
euler(i);
break;
}
for (int i : ans)
cout << i + 1 << " ";
cout << '\n';
}
}
'알고리즘 > 백준 & swacademy' 카테고리의 다른 글
BOJ 15586 - Moo tube ( 오프라인 쿼리, 유니온 파인드 ) (0) | 2020.02.19 |
---|---|
BOJ 15475 - A pie for a pie (이분그래프, 이분탐색) (0) | 2020.02.18 |
BOJ 1967 - 트리의 지름 (0) | 2020.02.08 |
BOJ 11994 - Circular Barn Revisited (dp) (0) | 2020.02.07 |
BOJ 12003 - Diamond Collector (전처리) (0) | 2020.02.07 |