Advertisement
Guest User

Untitled

a guest
Feb 18th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. vector <vector <pair<int,int> > > g;
  5. int n, m, x, y, z, s, f;
  6. int r[1000][1000];
  7. const int INF = 1e7;
  8. int main()
  9. {
  10. cin >> n >> s >> f;
  11. g.resize(n);
  12. for (int i = 0; i < n; i++) {
  13. for (int j = 0; j < n; j++) {
  14. cin >> r[i][j];
  15. if (r[i][j] > -1 && i != j)
  16. g[i].push_back(make_pair(j, r[i][j]));
  17. }
  18. // cin >> x >> y >> z;
  19. }
  20. /* for (int i = 0; i < n; i++) {
  21. for (int j = 0; j < g[i].size(); j++)
  22. cout << i << " " << g[i][j].first << " " << g[i][j].second << endl;
  23. // cout << endl;
  24. } */
  25. //cin >> s;
  26. s--;
  27. f--;
  28. vector <int> d(n, INF);
  29. vector <int> p(n);
  30. vector <bool> u(n, false);
  31. d[s] = 0;
  32. u[s] = true;
  33. p[s] = -1;
  34. for (int i = 0; i < n; i++) {
  35. int v = -1;
  36. for (int j = 0; j < n; j++) {
  37. if (!u[j] && (v == -1 || d[j] < d[v]))
  38. v = j;
  39. }
  40. if (d[v] == INF)
  41. break;
  42. u[v] = true;
  43. for (int j = 0; j < g[v].size(); j++) {
  44. int to = g[v][j].first;
  45. int len = g[v][j].second;
  46. // d[to] = min(d[to], d[v] + len);
  47. if (d[v] + len < d[to]) {
  48. d[to] = d[v] + len;
  49. p[to] = v;
  50. }
  51. }
  52. }
  53. int MAX = -1;
  54. // int t = 0;
  55. /* for (int i = 0; i < n; i++) {
  56. if (d[n] > MAX) {
  57. MAX = d[n];
  58. t = i;
  59. }
  60. } */
  61. if (d[f] == INF) {
  62. cout << -1;
  63. return 0;
  64. }
  65. else {
  66. // cout << d[f] << endl;
  67. vector<int> ans;
  68. ans.push_back(f);
  69. for (int i = f; p[i] != -1; i = p[i]) {
  70. ans.push_back(p[i]);
  71. }
  72. reverse(ans.begin(), ans.end());
  73. for (int i = 0; i < ans.size(); i++)
  74. cout << i + 1 << " ";
  75. }
  76. return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement