zoukankan      html  css  js  c++  java
  • bzoj 1415 无环期望

     1 #include <cstdio>
     2 #include <vector>
     3 #include <queue>
     4 #include <algorithm>
     5 #define maxn 1010
     6 using namespace std;
     7 
     8 
     9 int n, m, a, b;
    10 vector<int> g[maxn];
    11 int s[maxn][maxn];
    12 double f[maxn][maxn];
    13 
    14 void bfs( int src ) {
    15     queue<int> qu;
    16     s[src][src] = src;
    17     for( int t=0; t<g[src].size(); t++ ) {
    18         int v = g[src][t];
    19         s[src][v] = v;
    20         qu.push( v );
    21     }
    22     while( !qu.empty() ) {
    23         int u = qu.front();
    24         qu.pop();
    25         for( int t=0; t<g[u].size(); t++ ) {
    26             int v = g[u][t];
    27             if( s[src][v] ) continue;
    28             s[src][v] = s[src][u];
    29             qu.push(v);
    30         }
    31     }
    32 }
    33 void dodp( int i, int j ) {
    34     double &dv = f[i][j];
    35     if( dv>-0.5 ) return;
    36     if( i==j ) {
    37         dv = 0.0;
    38         return;
    39     }
    40     if( s[i][j]==j || s[s[i][j]][j]==j ) {
    41         dv = 1.0;
    42         return;
    43     }
    44     dv = 0.0;
    45     for( int t=0; t<g[j].size(); t++ ) {
    46         int v = g[j][t];
    47         dodp( s[s[i][j]][j], v );
    48         dv += f[s[s[i][j]][j]][v];
    49     }
    50     dv /= g[j].size();
    51     dv += 1.0;
    52 }
    53 
    54 int main() {
    55     scanf( "%d%d%d%d", &n, &m, &a, &b );
    56     for( int i=1,u,v; i<=m; i++ ) {
    57         scanf( "%d%d", &u, &v );
    58         g[u].push_back(v);
    59         g[v].push_back(u);
    60     }
    61     for( int i=1; i<=n; i++ ) sort( g[i].begin(), g[i].end() );
    62     for( int i=1; i<=n; i++ ) bfs(i);
    63     for( int i=1; i<=n; i++ )
    64         g[i].push_back(i);
    65     for( int i=1; i<=n; i++ )
    66         for( int j=1; j<=n; j++ ) f[i][j] = -1.0;
    67     dodp( a, b );
    68     printf( "%.3lf
    ", f[a][b] );
    69 }
    View Code
  • 相关阅读:
    【664】日常记录
    【663】dataframe 删掉指定行或者列
    【662】TensorFlow GPU 相关配置
    【661】Python split 指定多个分隔符
    【660】TensorFlow 或者 keras 版本问题
    FFMPEG视音频编解码
    cpplint中filter参数
    升级pip之后出现sys.stderr.write(f“ERROR: {exc}“)
    特征点三角化恢复3D点
    VIO——陀螺仪零偏估计
  • 原文地址:https://www.cnblogs.com/idy002/p/4299962.html
Copyright © 2011-2022 走看看