loulett

Ford&Bellman

May 19th, 2015
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <fstream>
  5. #include <math.h>
  6.  
  7. int INF = 1000000;
  8.  
  9. int main()
  10. {
  11.     std::ifstream finp;
  12.     finp.open("input.txt");
  13.     int n = 0, a = 0, b = 0, x = 0;
  14.     double c = 0;
  15.     std::vector < std::pair<double, std::pair<int, int>> > e;
  16.     std::vector<double> d;
  17.     std::vector<double> p;
  18.     finp >> n;
  19.     d.resize(n, INF);
  20.     p.resize(n, -1);
  21.     for (int i = 0; i < n; i++)
  22.     {
  23.         for (int j = 0; j < n; j++)
  24.         {
  25.             if (i == j)
  26.                 continue;
  27.             finp >> c;
  28.             if(c > 0)
  29.                 e.push_back(std::make_pair(c, std::make_pair(i, j)));
  30.         }
  31.     }
  32.  
  33.     d[0] = 1;
  34.     int fl = 0;
  35.  
  36.     for (int i = 0; i < n; i++)
  37.     {
  38.         for (int j = 0; j < e.size(); j++)
  39.         {
  40.             if (d[e[j].second.first] < INF)
  41.             {
  42.                 if (i == n - 1 && d[e[j].second.second] > d[e[j].second.first] * e[j].first)
  43.                 {
  44.                     fl = 1;
  45.                     break;
  46.                 }
  47.                 d[e[j].second.second] = std::min(d[e[j].second.second], d[e[j].second.first] * e[j].first);
  48.             }
  49.         }
  50.         if (fl)
  51.             break;
  52.     }
  53.  
  54.     if (!fl)
  55.         std::cout << "No\n";
  56.     else
  57.         std::cout << "Yes\n";
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment