Advertisement
juyana

belmenford

Oct 9th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. vector < int > v [2010];
  7. vector < int > cost [2010];
  8. int d [ 2010 ] ;
  9. const int infinity = 1e9;
  10. int n , m ;
  11. int bellman ( int src ) {
  12. d [ src ] = 0 ;
  13. for ( int i = 0 ; i < n ; i ++)d[i]=infinity;
  14. for ( int i = 0 ; i < n - 1 ; i ++ ) { // n = vertex number
  15.  
  16. for ( int u = 0 ; u < n ; u ++ ) { // for every edge (u-v)
  17.  
  18. for ( int k = 0 ; k < v [ u ].size() ; k ++ ) {
  19. if ( d [ u ] + cost [ u ][ k ] < d [ v [ u] [ k ] ] ){
  20. d [ v [ u] [ k ] ] = d [ u ] + cost [ u ][k] ;
  21.  
  22. }
  23.  
  24.  
  25. }
  26.  
  27. }
  28.  
  29. }
  30. }
  31.  
  32. bool cycle ( ){
  33.  
  34. for ( int u = 0 ; u < n ; u ++ ) {
  35.  
  36. for ( int k = 0 ; k < v [ u ].size() ; k ++ ) {
  37. if ( d [ u ] + cost [ u ][ k ] < d [ v [ u] [ k ] ] ){
  38. return true ;
  39.  
  40. }
  41.  
  42.  
  43. }
  44.  
  45. }
  46. return false ;
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54. }
  55. int main()
  56. {
  57.  
  58. int t ;
  59. cin >> t ;
  60. while(t--){
  61. cin >> n >> m;
  62. for ( int i = 0 ; i < m ; i ++ ){
  63. int a , b , c ;
  64. cin >> a >> b >> c;
  65. v[a].push_back(b);
  66. cost[a].push_back(c);
  67. }
  68. bellman(0);
  69. bool bp = cycle();
  70. if ( bp ){
  71. cout <<"possible"<<endl;
  72. }else cout <<"not possible"<<endl;
  73. for ( int i = 0 ; i < n ; i ++)v[i].clear();
  74. for ( int i = 0 ; i < n ; i ++ )cost[i].clear();
  75. }
  76.  
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement