fork(1) download
  1. /*
  2.   Copyright 2011 Marek "p2004a" Rusinowski
  3.   Floyd-Warshall algorithm
  4. */
  5. #include <cstdio>
  6. #include <algorithm>
  7.  
  8. #define MAXN 1000
  9. #define INF 0x0FFFFFFF
  10.  
  11. int d[MAXN][MAXN];
  12.  
  13. int main() {
  14. int n, m, a, b, c;
  15. scanf("%d %d", &n, &m);
  16. std::fill((int*)d, (int*)d + MAXN * n, INF);
  17. for (int i = 0; i < n; ++i) {
  18. d[i][i] = 0;
  19. }
  20. for (int i = 0; i < m; ++i) {
  21. scanf("%d %d %d", &a, &b, &c);
  22. d[--a][--b] = c;
  23. d[b][a] = c;
  24. }
  25. for (int k = 0; k < n; ++k) {
  26. for (int i = 0; i < n; ++i) {
  27. for (int j = 0; j < n; ++j) {
  28. d[i][j] = std::min(d[i][j], d[i][k] + d[k][j]);
  29. }
  30. }
  31. }
  32. for (int j = 0; j < n; ++j) {
  33. for (int i = 0; i < n; ++i) {
  34. printf("%3d ", d[j][i]);
  35. }
  36. printf("\n");
  37. }
  38. return 0;
  39. }
  40.  
stdin
4 3
1 2 1
2 3 1
3 4 1
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:15: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
prog.cpp:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
stdout
  0   1   2   3 
  1   0   1   2 
  2   1   0   1 
  3   2   1   0