Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. // Bellman–Ford.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <vector>
  6. #include <iostream>
  7. #include <set>
  8. #include <algorithm>
  9. using namespace std;
  10.  
  11. struct edge {
  12. int a, b, cost;
  13. };
  14.  
  15.  
  16. int main()
  17. {
  18.  
  19.  
  20. int n, m;
  21. int v = 0;
  22.  
  23. freopen("input.txt", "rt", stdin);
  24. freopen("output.txt", "wt", stdout);
  25.  
  26. cin >> n >> m;
  27.  
  28. vector<edge> edges(m);
  29.  
  30. for (int i = 0; i < m; i++) {
  31. int a, b, c;
  32. cin >> a >> b >> c;
  33. edges[i].a = a-1;
  34. edges[i].b = b-1;
  35. edges[i].cost = c;
  36. }
  37.  
  38.  
  39. vector<int> d(n, INT32_MAX);
  40.  
  41.  
  42. d[v] = 0;
  43. while (true) {
  44. bool any = false;
  45. for (int i = 0; i < m; i++) {
  46. if (d[edges[i].a] < INT32_MAX) {
  47. if (d[edges[i].b] > d[edges[i].a] + edges[i].cost) {
  48. d[edges[i].b] = d[edges[i].a] + edges[i].cost;
  49. any = true;
  50. }
  51. }
  52. }
  53. if (!any) {
  54. break;
  55. }
  56. }
  57.  
  58. for (int i = 0; i < n; i++) {
  59. if (d[i] == INT32_MAX) {
  60. d[i] = 30000;
  61. }
  62. cout << d[i] << " ";
  63. }
  64.  
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement