제출 #1030212

#제출 시각아이디문제언어결과실행 시간메모리
1030212Agreb가장 긴 여행 (IOI23_longesttrip)C++17
60 / 100
867 ms692 KiB
#include <bits/stdc++.h> #include "longesttrip.h" using namespace std; vector <int> longest_trip(int N, int D){ vector <vector<int>> gr(N, vector<int>(N, 0)); vector <int> path; for (int i = 0; i < N; i++){ for (int j = 0; j < i; j++){ vector <int> a{i}, b{j}; gr[i][j] = gr[j][i] = are_connected(a, b); if (gr[i][j]){ path = {i, j}; } } } assert(!path.empty()); vector <int> on_path(N); for (int u : path) on_path[u] = 1; while (path.size() < N){ int P = path.size(); int st = path[0], fin = path[P-1]; int done = 0; for (int v = 0; v < N; v++){ if (!on_path[v]){ if (gr[st][v]){ reverse(path.begin(), path.end()); path.push_back(v); on_path[v] = 1; done = 1; break; } if (gr[fin][v]){ path.push_back(v); on_path[v] = 1; done = 1; break; } } } if (done) continue; assert(gr[st][fin] == 1); for (int v = 0; v < N; v++){ if (!on_path[v]){ for (int i = 0; i < P; i++){ if (gr[path[i]][v]){ vector <int> npath; for (int j = 0; j < P; j++) npath.push_back(path[(j+i+1)%P]); npath.push_back(v); path = npath; on_path[v] = 1; done = 1; break; } } if (done) break; } } if (done) continue; if (P >= N - P) return path; else{ vector <int> npath; for (int v = 0; v < N; v++){ if (!on_path[v]) npath.push_back(v); } return npath; } } return path; }

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

longesttrip.cpp: In function 'std::vector<int> longest_trip(int, int)':
longesttrip.cpp:22:24: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   22 |     while (path.size() < N){
      |            ~~~~~~~~~~~~^~~
#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...