Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. struct edge{
  6. long long from, to, cost;
  7. }typedef edge;
  8.  
  9. edge edges[6010];
  10.  
  11. long long inf = 1e18 * 9;
  12.  
  13. int main() {
  14. int n, m, s;
  15. cin >> n >> m >> s;
  16. for (int i = 0; i < m; i++)
  17. cin >> edges[i].from >> edges[i].to >> edges[i].cost;
  18.  
  19. vector<long long> d(n + 1, inf);
  20. d[s] = 0;
  21. for (int i = 0; i <= 2*n; i++)
  22. for (int j = 0 ; j < m; j++){
  23. if (d[edges[j].from] < inf && d[edges[j].from] + edges[j].cost < d[edges[j].to]){
  24. d[edges[j].to] = max(-inf, d[edges[j].from] + edges[j].cost);
  25. if (i >= n)
  26. d[edges[j].to] = -inf;
  27. }
  28. }
  29.  
  30. for (int i = 1; i <= n; i++){
  31. if (d[i] == inf)
  32. cout << "*" << "\n";
  33. else if (d[i] == -inf)
  34. cout << "-" << "\n";
  35. else
  36. cout << d[i] << "\n";
  37. }
  38. }
  39.  
  40. аок
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement