Submission #4033243
Source Code Expand
#include <iostream>
#include <string>
#include <utility>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
using namespace std;
#define REP(i, n) for(int i = 0;i < n;i++)
#define REPR(i, n) for(int i = n;i >= 0;i--)
#define FOR(i, m, n) for(int i = m;i < n;i++)
#define FORR(i, m, n) for(int i = m;i >= n;i--)
#define REPO(i, n) for(int i = 1;i <= n;i++)
#define ll long long
#define INF 1999999999
#define MINF -1999999999
#define INF64 5999999999999999999
#define ALL(n) n.begin(),n.end()
#define ABS(a,b) max(a,b) - min(a,b)
vector<int> t;
ll s[300][300];
int main() {
ll n, m, r,ans = INF;
cin >> n >> m >> r;
REP(i, n) {
REP(j, n) {
if (i != j)s[i][j] = INF;
}
}
REP(i, r) {
int a;
cin >> a;
t.push_back(a);
}
REP(i, m) {
int a, b, c;
cin >> a >> b >> c;
s[a][b] = c;
s[b][a] = c;
}
sort(ALL(t));
REPO(k, n) REPO(i, n) REPO(j, n) s[i][j] = min(s[i][j], s[i][k] + s[k][j]);
do {
ll a = 0;
REP(i, r - 1) a += s[t[i]][t[i + 1]];
ans = min(a, ans);
} while (next_permutation(ALL(t)));
cout << ans << endl;
}
Submission Info
Submission Time |
|
Task |
D - joisino's travel |
User |
kenken714 |
Language |
C++14 (GCC 5.4.1) |
Score |
0 |
Code Size |
1197 Byte |
Status |
WA |
Exec Time |
29 ms |
Memory |
768 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
0 / 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 |
28 ms |
768 KB |
02.txt |
WA |
12 ms |
768 KB |
03.txt |
WA |
12 ms |
768 KB |
04.txt |
WA |
13 ms |
768 KB |
05.txt |
WA |
16 ms |
768 KB |
06.txt |
AC |
28 ms |
768 KB |
07.txt |
AC |
29 ms |
768 KB |
08.txt |
WA |
11 ms |
640 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 |