Guest User

Untitled

a guest
May 10th, 2016
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. #include <bits/stdtr1c++.h>
  2.  
  3. using namespace std;
  4.  
  5. typedef double ld;
  6. ld a[2][505][505], a_[2][505][505], b[2][505];
  7. int main() {
  8.     ios::sync_with_stdio(0);
  9.     int n; cin >> n;
  10.     for (int i = 0; i < n; i++) {
  11.         for (int j = 0; j < n; j++) {
  12.             cin >> a[0][j][i];
  13.             a_[0][i][j] = a[0][j][i];
  14.         }
  15.     }
  16.    
  17.     for (int iter = 1; iter < (n < 300 ? 19 : 7); iter++) {
  18.         for (int i = 0; i < n; i++) {
  19.             for (int j = 0; j < n; j++) {
  20.                 a[iter&1][i][j] = 0;
  21.                 for (int k = 0; k < n; k++) {
  22.                     a[iter&1][i][j] += a[(iter&1)^1][i][k] * a_[(iter&1)^1][j][k];
  23.                 }
  24.                 a_[iter&1][j][i] = a[iter&1][i][j];
  25.             }
  26.         }
  27.     }
  28.  
  29.     for (int i = 0; i < n; i++) {
  30.         b[0][i] = a[0][i][0];
  31.     }
  32.    
  33.     int iter = 1, max_iters = 100;
  34.     while (max_iters--) {
  35.         for (int i = 0; i < n; i++) {
  36.             for (int j = 0; j < n; j++) {
  37.                 b[iter][i] += a[0][i][j] * b[iter^1][j];
  38.             }
  39.         }
  40.         iter ^= 1;
  41.     }
  42.    
  43.     ld sum = 0;
  44.     for (int i = 0; i < n; i++) {
  45.         sum += b[0][i];
  46.     }
  47.     cout << fixed << setprecision(8) << b[0][0]/sum << endl;
  48.     return 0;
  49. }
Add Comment
Please, Sign In to add comment