Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- struct edge{
- long long from, to, cost;
- }typedef edge;
- edge edges[6010];
- long long inf = 1e18 * 9;
- int main() {
- int n, m, s;
- cin >> n >> m >> s;
- for (int i = 0; i < m; i++)
- cin >> edges[i].from >> edges[i].to >> edges[i].cost;
- vector<long long> d(n + 1, inf);
- d[s] = 0;
- for (int i = 0; i <= 2*n; i++)
- for (int j = 0 ; j < m; j++){
- if (d[edges[j].from] < inf && d[edges[j].from] + edges[j].cost < d[edges[j].to]){
- d[edges[j].to] = max(-inf, d[edges[j].from] + edges[j].cost);
- if (i >= n)
- d[edges[j].to] = -inf;
- }
- }
- for (int i = 1; i <= n; i++){
- if (d[i] == inf)
- cout << "*" << "\n";
- else if (d[i] == -inf)
- cout << "-" << "\n";
- else
- cout << d[i] << "\n";
- }
- }
- аок
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement