Advertisement
Guest User

Untitled

a guest
Jan 5th, 2015
9
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <limits.h>
  4.  
  5. int main()
  6. {
  7. int C, F;
  8. scanf("%d %d", &C, &F);
  9.  
  10. int flights[C][C], i, j;
  11. for (i = 0; i < C; i++)
  12. for (j = 0; j < C; j++)
  13. flights[i][j] = -1;
  14.  
  15. long long max_cost = LLONG_MIN;
  16.  
  17. for (i = 0; i < F; i++) {
  18. int x, y;
  19. scanf("%d %d", &x, &y); x--; y--;
  20. scanf("%d", &flights[x][y]);
  21. flights[y][x] = flights[x][y];
  22. }
  23.  
  24. for (i = 0; i < C; i++) {
  25. long long distance[C]; int visited[C];
  26. for (j = 0; j < C; j++)
  27. distance[j] = flights[i][j], visited[j] = 0;
  28.  
  29. visited[i] = 1;
  30. while (1) {
  31. int min_flight = -1, min_distance = INT_MAX;
  32. for (j = 0; j < C; j++)
  33. if (distance[j] != -1 && !visited[j]
  34. && distance[j] < min_distance) {
  35. min_distance = distance[j];
  36. min_flight = j;
  37. }
  38.  
  39. if (min_flight == -1)
  40. break;
  41.  
  42. visited[min_flight] = 1;
  43. if (min_distance > max_cost) max_cost = min_distance;
  44. for (j = 0; j < C; j++) {
  45. if (flights[min_flight][j] != -1) {
  46. if (distance[j] == -1 ||
  47. distance[j] > min_distance + flights[min_flight][j]) {
  48. distance[j] = min_distance + flights[min_flight][j];
  49. }
  50. }
  51. }
  52. }
  53. }
  54.  
  55. printf("%lld\n", max_cost);
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement