Advertisement
a53

graph

a53
Feb 6th, 2020
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. #include<cstdio>
  2. #include<vector>
  3. #include<queue>
  4. #define infile "graph.in"
  5. #define outfile "graph.out"
  6. #define nMax 1513
  7. #define inf (1<<29)
  8.  
  9. using namespace std;
  10.  
  11. vector < pair<int, int> > v[nMax];
  12. int dp[nMax];
  13. int n, m;
  14.  
  15. void read() {
  16. scanf("%d %d\n", &n, &m);
  17.  
  18. for (int i = 0; i < m; ++i) {
  19. int x, y, z;
  20. scanf("%d %d %d\n", &x, &y, &z);
  21. v[x].push_back(make_pair(y, z));
  22. }
  23. }
  24.  
  25. void bf(int x) {
  26.  
  27. queue <int> q;
  28.  
  29. for (int i = 0; i < n+1; ++i) {
  30. dp[i] = inf;
  31. }
  32.  
  33. dp[x] = 0; q.push(x);
  34.  
  35. while(q.size()) {
  36. int x = q.front();
  37.  
  38. for (unsigned j = 0; j < v[x].size(); ++j) {
  39. if (dp[v[x][j].first] > dp[x] + v[x][j].second) {
  40. dp[v[x][j].first] = dp[x] + v[x][j].second;
  41. q.push(v[x][j].first);
  42. }
  43. }
  44.  
  45. q.pop();
  46. }
  47. }
  48.  
  49. void solve() {
  50.  
  51. for (int i = 0; i < n; ++i) {
  52. bf(i+1);
  53.  
  54. for (int j = 0; j < n; ++j) {
  55. if (dp[j+1] == inf) {
  56. printf("x ");
  57. } else {
  58. printf("%d ", dp[j+1]);
  59. }
  60. }
  61.  
  62. printf("\n");
  63. }
  64. }
  65.  
  66. int main() {
  67. freopen(infile, "r", stdin);
  68. freopen(outfile, "w", stdout);
  69.  
  70. read();
  71. solve();
  72.  
  73. fclose(stdin);
  74. fclose(stdout);
  75. return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement