제출 #840523

#제출 시각아이디문제언어결과실행 시간메모리
840523arbuzick가장 긴 여행 (IOI23_longesttrip)C++17
60 / 100
890 ms548 KiB
#include <bits/stdc++.h> #include "longesttrip.h" using namespace std; vector<int> longest_trip(int n, int d) { if (d == 3) { vector<int> ans(n); iota(ans.begin(), ans.end(), 0); return ans; } if (d == 2) { vector<int> ans = {0}; vector<int> used(n); used[0] = 1; while (ans.size() < n) { int nxt = -1; for (int i = 0; i < n; ++i) { if (!used[i] && are_connected({ans.back()}, {i})) { nxt = i; used[i] = 1; break; } } if (nxt == -1) { reverse(ans.begin(), ans.end()); for (int i = 0; i < n; ++i) { if (!used[i] && are_connected({ans.back()}, {i})) { nxt = i; used[i] = 1; break; } } } ans.push_back(nxt); } return ans; } if (d == 1) { vector<vector<int>> g(n, vector<int>(n)); for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { if (are_connected({i}, {j})) { g[i][j] = g[j][i] = 1; } } } vector<int> ans = {0}; vector<int> used(n); used[0] = 1; auto try_to_add = [&]() { int nxt = -1; for (int i = 0; i < n; ++i) { if (!used[i] && g[ans.back()][i]) { nxt = i; used[i] = 1; break; } } if (nxt == -1) { return false; } ans.push_back(nxt); return true; }; while (true) { if (!try_to_add()) { break; } } if (ans.size() < n) { reverse(ans.begin(), ans.end()); if (try_to_add()) { while (true) { if (!try_to_add()) { break; } } } else { for (int _ = 0; _ < (int)ans.size(); ++_) { reverse(ans.begin(), ans.end()); int vl = ans.back(); ans.pop_back(); reverse(ans.begin(), ans.end()); ans.push_back(vl); if (try_to_add()) { while (true) { if (!try_to_add()) { break; } } break; } } } } if (ans.size() * 2 < n) { ans.clear(); for (int i = 0; i < n; ++i) { if (!used[i]) { ans.push_back(i); } } } return ans; } }

컴파일 시 표준 에러 (stderr) 메시지

longesttrip.cpp: In function 'std::vector<int> longest_trip(int, int)':
longesttrip.cpp:17:27: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   17 |         while (ans.size() < n) {
      |                ~~~~~~~~~~~^~~
longesttrip.cpp:72:24: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   72 |         if (ans.size() < n) {
      |             ~~~~~~~~~~~^~~
longesttrip.cpp:98:28: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   98 |         if (ans.size() * 2 < n) {
      |             ~~~~~~~~~~~~~~~^~~
longesttrip.cpp:108:1: warning: control reaches end of non-void function [-Wreturn-type]
  108 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...