Advertisement
Foqrul

Probability

Apr 25th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. #include<iostream>
  2. #define SIZEN 102
  3. #define SIZEM 1003
  4. using namespace std;
  5. double probability[SIZEN][SIZEN], table[SIZEM / 10][SIZEN], p, ans;
  6. int time, M, N, T, x, y, node, Case = 1;
  7. void readCase(){
  8.     scanf("%d%d%d", &N, &M, &T);//N=number of node,M=number of edge,T==time;
  9.     for (int i = 0; i < M; i++){
  10.         scanf("%d%d%lf", &x, &y, &p);
  11.         probability[x][y] = p;
  12.     }
  13. }
  14. void probability_init(){
  15.     for (int i = 1; i <= SIZEN; i++)
  16.         for (int j = 1; j <= SIZEN; j++){
  17.             probability[i][j] = 0;
  18.         }
  19. }
  20. void solve(){
  21.     table[0][1] = 1.0;
  22.     for (int i = 0; i < time; i++){
  23.         for (int j = 1; j <= N; j++){
  24.             if (table[i][j] > 0){
  25.                 for (int k = 1; k <= N; k++){
  26.                     if (probability[j][k] > 0){
  27.  
  28.                         table[i + 1][k] += (table[i][j] * probability[j][k]);
  29.                     }
  30.                 }
  31.             }
  32.         }
  33.     }
  34. }
  35. void table_init(){
  36.     for (int i = 0; i <= time; i++){
  37.         for (int j = 1; j <= N; j++){
  38.             table[i][j] = 0;
  39.         }
  40.     }
  41. }
  42. void solveCase(){
  43.     ans = 0;
  44.     time = T / 10;
  45.     table_init();
  46.     solve();
  47.  
  48. }
  49. void find_node(){
  50.     for (int i = 1; i <= N; i++){
  51.         if (ans < table[time][i]){
  52.             ans = table[time][i];
  53.             node = i;
  54.         }
  55.     }
  56. }
  57. int main(){
  58.     freopen("fin.txt", "r", stdin);
  59.     freopen("fout.txt", "w", stdout);
  60.     int t;
  61.     scanf("%d", &t);
  62.     while (t--){
  63.         probability_init();
  64.         readCase();
  65.         solveCase();
  66.         find_node();
  67.         printf("#%d %d %.6lf\n", Case++, node, ans);
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement