#include #include #include #include #include #include #include #include #include #include #include #include #define debug_value(x) cerr << "line" << __LINE__ << ":<" << __func__ << ">:" << #x << "=" << x << endl; #define debug(x) cerr << "line" << __LINE__ << ":<" << __func__ << ">:" << x << endl; template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } using namespace std; typedef long long ll; const ll INF = 1e+15; vector> warshallfloyd(vector> g){ int n = g.size(); vector> dist(n, vector(n)); for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ dist[i][j] = g[i][j]; } dist[i][i] = 0; } for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ for(int k = 0; k < n; k++){ ll new_len = dist[j][i] + dist[i][k]; dist[j][k] = min(new_len, dist[j][k]); } } } return dist; } int popcount(int n){ int ans = 0; for(int i = 0; i < 20; i++){ if(n&(1<> n >> m >> k; vector a(n); for(int i = 0; i < n; i++) cin >> a[i]; vector> g(n, vector(n, INF)); for(int i = 0; i < m; i++){ int x, y; ll z; cin >> x >> y >> z; x--; y--; g[x][y] = z; g[y][x] = z; } auto d = warshallfloyd(g); vector dp(1<