제출 #864352

#제출 시각아이디문제언어결과실행 시간메모리
864352AriadnaPohlepko (COCI16_pohlepko)C++14
30 / 80
1078 ms65536 KiB
#include <bits/stdc++.h> using namespace std; int n, m; vector < vector < char > > grid; vector < vector < int > > adj; string s = "", ans = ""; void dfs(int u) { int i = u / m, j = u % m; s += grid[i][j]; if (u == n * m - 1) { if (ans == "") ans = s; else ans = min(ans, s); } else { if (i == n - 1) dfs(u + 1); else if (j == m - 1) dfs(u + 1); else { if (grid[i + 1][j] <= grid[i][j + 1]) dfs(u + m); if (grid[i + 1][j] >= grid[i][j + 1]) dfs(u + 1); } } s.pop_back(); } int main() { cin >> n >> m; grid = vector < vector < char > >(n, vector < char >(m)); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cin >> grid[i][j]; } } adj = vector < vector < int > >(n * m); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { if (i < n - 1) adj[i * m + j].push_back((i + 1) * m + j); if (j < m - 1) adj[i * m + j].push_back(i * m + j + 1); } } dfs(0); cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...