# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
631864 | jhnah917 | Travelling Salesperson (CCO20_day2problem1) | C++14 | 560 ms | 36140 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
int N, A[2020][2020];
void Solve(int src){
list<int> res;
function<void(int)> add = [&res](int v){
if(res.size() <= 1){ res.push_back(v); return; }
int a = *res.begin(), b = *res.rbegin();
if(A[v][a] == 0) res.push_front(v);
else if(A[v][b] == 1) res.push_back(v);
else if(A[a][b] == 0) res.pop_back(), res.push_front(b), res.push_front(v);
else res.pop_front(), res.push_back(a), res.push_back(v);
};
for(int i=1; i<=N; i++) if(i != src) add(i);
add(src);
if(*res.begin() != src) res.reverse();
cout << N << "\n";
for(auto i : res) cout << i << " ";
cout << "\n";
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr);
cin >> N;
for(int i=2; i<=N; i++) for(int j=1; j<i; j++) { char c; cin >> c; A[i][j] = A[j][i] = c == 'B'; }
for(int i=1; i<=N; i++) Solve(i);
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |