Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void solve()
- {
- vector<int> d (n, INF);
- d[v] = 0;
- vector<int> p (n, -1);
- // e[i][0] is start , e[i][1] is end vertex .. e[i][2] is edge weight
- for (int i=0;i<n-1;i++)
- {
- bool any = false;
- for (int j = 0; j < m; ++j) // all edges are traversed n-1 times
- if (d[e[j][0]] < INF)
- if (d[e[j][1]] > d[e[j][0]] + e[j][2])
- {
- d[e[j][1]] = d[e[j][0]] + e[j][2];
- p[e[j][1]] = e[j][0];
- any = true;
- }
- if (any == false) break;
- }
- if (d[t] == INF)
- cout << "No path from ";
- else
- {
- vector<int> path;
- // path from vertex t to given source
- for (int cur = t; cur != -1; cur = p[cur])
- path.push_back (cur);
- reverse (path.begin(), path.end());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement