Submission #1789986
Source Code Expand
#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; const int INF = 1e8; int main() { int n, m, r; cin >> n >> m >> r; vector<int> R(r); for (int i = 0; i < r; i++) { int a; cin >> a; R[i] = a - 1; } int M[209][209]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { /* if (i == j) { M[i][j] = 0; } else { */ if (i != j) { M[i][j] = INF; } } } for (int i = 0; i < m; i++) { int a, b, c; cin >> a >> b >> c; a--; b--; if (M[a][b] > c) { M[a][b] = M[b][a] = c; } } for (int k = 0; k < n; k++) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { M[i][j] = min(M[i][j], M[i][k] + M[k][j]); } } } sort(R.begin(), R.end()); long long ans = 1e9; do { long long sum = 0; for (int i = 0; i < (r-1); i++) { sum += M[ R[i] ][ R[i+1] ]; } ans = min(sum ,ans); } while ( next_permutation(R.begin(), R.end()) ); printf("%lld\n", ans); return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - joisino's travel |
User | nomi |
Language | C++14 (GCC 5.4.1) |
Score | 400 |
Code Size | 1351 Byte |
Status | AC |
Exec Time | 25 ms |
Memory | 384 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt |
All | 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, sample_01.txt, sample_02.txt, sample_03.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01.txt | AC | 24 ms | 384 KB |
02.txt | AC | 11 ms | 384 KB |
03.txt | AC | 11 ms | 384 KB |
04.txt | AC | 12 ms | 384 KB |
05.txt | AC | 14 ms | 384 KB |
06.txt | AC | 24 ms | 384 KB |
07.txt | AC | 25 ms | 384 KB |
08.txt | AC | 10 ms | 384 KB |
sample_01.txt | AC | 1 ms | 256 KB |
sample_02.txt | AC | 1 ms | 256 KB |
sample_03.txt | AC | 1 ms | 256 KB |