#include #include #include #include using namespace std; const int EMP = INT_MAX; int main() { int n, m, s, g1, g2; long long t[128][128]; while (cin >> n >> m >> s >> g1 >> g2 && !(n == 0 && m == 0 && s == 0 && g1 == 0 && g2 == 0)){ for (int from = 1; from <= n; ++from){ for (int to = 1; to <= n; ++to){ t[from][to] = EMP; } } for (int i = 1; i <= n; ++i){ t[i][i] = 0; } for (int i = 0; i != m; ++i){ int b1, b2, c; cin >> b1 >> b2 >> c; t[b1][b2] = c; } for (int k = 1; k <= n; ++k){ for (int i = 1; i <= n; ++i){ for (int j = 1; j <= n; ++j){ if (t[i][j] > t[i][k] + t[k][j]){ t[i][j] = t[i][k] + t[k][j]; } } } } long long answer = 3 * (long long)INT_MAX; for (int i = 1; i <= n; ++i){ //cerr << t[1][i] << " "; answer = min(answer, t[s][i] + t[i][g1] + t[i][g2]); } cout << answer << endl; } }