Pagini recente » Cod sursa (job #820438) | Cod sursa (job #1278078) | Cod sursa (job #3160625) | Cod sursa (job #2235030) | Cod sursa (job #2604887)
#include <cstdio>
#include <algorithm>
#define INF 1e9
using namespace std;
struct elem {
int index, cost;
};
bool operator<(const elem &a, const elem &b) {
return a.cost < b.cost;
}
int main() {
int n, m, t, i, j, k, x, y, c, cmin, a[105][105], rf[105][105];
elem val[105];
freopen("coach.in", "r", stdin);
freopen("coach.out", "w", stdout);
scanf("%d%d%d", &n, &m, &t);
for(i = 1; i <= n; ++i) {
scanf("%d", &val[i].cost);
val[i].index = i;
}
for(i = 1; i <= n; ++i)
for(j = 1; j <= n; ++j) {
if(i != j)
a[i][j] = INF;
else
a[i][j] = 0;
}
for(i = 1; i <= m; ++i) {
scanf("%d%d%d", &x, &y, &c);
a[x][y] = a[y][x] = c;
}
sort(val+1, val+n+1);
for(cmin = 1; cmin < n; ++cmin) {
for(i = 1; i <= n; ++i)
for(j = 1; j <= n; ++j)
rf[i][j] = a[i][j];
for(k = cmin; k <= n; ++k) {
for(i = cmin; i <= n; ++i)
for(j = cmin; j <= n; ++j)
if(rf[val[i].index][val[j].index] > rf[val[i].index][val[k].index] + rf[val[k].index][val[j].index])
rf[val[i].index][val[j].index] = rf[val[i].index][val[k].index] + rf[val[k].index][val[j].index];
for(i = cmin; i <= k; ++i)
for(j = cmin; j <= k; ++j)
if(rf[val[i].index][val[j].index] == t) {
printf("%d %d %d %d", val[i].index, val[j].index, val[cmin].cost, val[k].cost);
return 0;
}
}
}
}