fork(1) download
  1. #include<bits/stdc++.h>
  2. #define endl '\n'
  3. using namespace std;
  4.  
  5. struct edge
  6. {
  7. int u,v,wt;
  8. };
  9.  
  10. int main()
  11. {
  12. int n;
  13. cin>>n;
  14.  
  15. int e;
  16. cin>>e;
  17.  
  18. edge edges[e+1];
  19. for(int i=0;i<e;i++)
  20. {
  21. cin>>edges[i].u>>edges[i].v>>edges[i].wt;
  22. }
  23.  
  24. int d[n+1];
  25. for(int i=0;i<=n;i++)
  26. d[i]=INT_MAX;
  27.  
  28. d[1]=0;
  29.  
  30. for(int i=0;i<n;i++)
  31. {
  32. for(int j=0;j<e;j++)
  33. {
  34. if(d[edges[j].v]>d[edges[j].u]+edges[j].wt)
  35. {
  36. if(i==n-1)
  37. {
  38. cout<<"Negative cycle found"<<endl;
  39. break;
  40. }
  41. d[edges[j].v]=d[edges[j].u]+edges[j].wt;
  42. }
  43. }
  44. }
  45.  
  46. for(int i=1;i<=n;i++)
  47. cout<<d[i]<<" ";
  48.  
  49. cout<<endl;
  50. return 0;
  51. }
Success #stdin #stdout 0s 4352KB
stdin
6
6
1 2 5
1 4 9
3 1 1
2 6 15
5 3 20
5 4 10
stdout
-2147483648 -2147483643 -2147483629 -2147483639 2147483647 -2147483628