Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <limits.h>
- int main()
- {
- int C, F;
- scanf("%d %d", &C, &F);
- int flights[C][C], i, j;
- for (i = 0; i < C; i++)
- for (j = 0; j < C; j++)
- flights[i][j] = -1;
- long long max_cost = LLONG_MIN;
- for (i = 0; i < F; i++) {
- int x, y;
- scanf("%d %d", &x, &y); x--; y--;
- scanf("%d", &flights[x][y]);
- flights[y][x] = flights[x][y];
- }
- for (i = 0; i < C; i++) {
- long long distance[C]; int visited[C];
- for (j = 0; j < C; j++)
- distance[j] = flights[i][j], visited[j] = 0;
- visited[i] = 1;
- while (1) {
- int min_flight = -1, min_distance = INT_MAX;
- for (j = 0; j < C; j++)
- if (distance[j] != -1 && !visited[j]
- && distance[j] < min_distance) {
- min_distance = distance[j];
- min_flight = j;
- }
- if (min_flight == -1)
- break;
- visited[min_flight] = 1;
- if (min_distance > max_cost) max_cost = min_distance;
- for (j = 0; j < C; j++) {
- if (flights[min_flight][j] != -1) {
- if (distance[j] == -1 ||
- distance[j] > min_distance + flights[min_flight][j]) {
- distance[j] = min_distance + flights[min_flight][j];
- }
- }
- }
- }
- }
- printf("%lld\n", max_cost);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement