Description

T国有N个城市,用若干双向道路连接。一对城市之间至多存在一条道路。
在一次洪水之后,一些道路受损无法通行。虽然已经有人开始调查道路的损毁情况,但直到现在几乎没有消息传回。
幸运的是,此前T国政府调查过每条道路的强度,现在他们希望只利用这些信息估计灾情。具体地,给定每条道路在洪水后仍能通行的概率,请计算仍能通行的道路恰有N-1条,且能联通所有城市的概率。

Input

输入的第一行包含整数N。
接下来N行,每行N个实数,第i+l行,列的数G[i][j]表示城市i与j之
间仍有道路联通的概率。
输入保证G[i][j]=G[j][i],且G[i][j]=0;G[i][j]至多包含两位小数。

Output

输出一个任意位数的实数表示答案。
你的答案与标准答案相对误差不超过10^(-4)即视为正确。

Sample Input

3
0 0.5 0.5
0.5 0 0.5
0.5 0.5 0

Sample Output

0.375

HINT

1 < N < =50

数据保证答案非零时,答案不小于10^-4

Solution

题目即让求:($T$是生成树,$e$是边)
$\sum_{T}\prod_{e\in T} p_e \prod_{e\notin T}(1-p_e)$
把第二个$\prod$变一下
$\sum_{T}\prod_{e\in T} p_e \frac{\prod_{e}(1-p_e)}{\prod_{e\in T}(1-p_e)}$
也就是
$\prod_{e}(1-p_e)\sum_{T}\prod_{e\in T} \frac{p_e}{1-p_e}$。
其中行和矩阵$-$边权矩阵的行列式的值$=\sum_{T}\prod_{e\in T} w_e$,其中$w$是边权。
然后就可以高斯消元求解了。

Code

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define N (59)
#define eps (1e-10)
using namespace std; int n;
double a[N][N],f[N][N],ans=; void Gauss()
{
int w=;
for (int i=; i<=n-; ++i)
{
int num=i;
for (int j=i+; j<=n-; ++j)
if (fabs(f[j][i])>fabs(f[num][i])) num=j;
if (num!=i) swap(f[num],f[i]), w=-w;
for (int j=i+; j<=n-; ++j)
{
double t=f[j][i]/f[i][i];
for (int k=i; k<=n-; ++k)
f[j][k]-=t*f[i][k];
}
}
for (int i=; i<=n-; ++i) ans*=f[i][i];
for (int i=; i<=n; ++i)
for (int j=i+; j<=n; ++j)
ans*=-a[i][j];
printf("%.10lf\n",ans*w);
} int main()
{
scanf("%d",&n);
for (int i=; i<=n; ++i)
for (int j=; j<=n; ++j)
{
scanf("%lf",&a[i][j]);
if (a[i][j]==) a[i][j]-=eps;
if (i==j) continue;
f[i][j]=-a[i][j]/(-a[i][j]);
f[i][i]-=f[i][j];
}
Gauss();
}

BZOJ3534:[SDOI2014]重建(矩阵树定理)的更多相关文章

  1. [SDOI2014] 重建 - 矩阵树定理,概率期望

    #include <bits/stdc++.h> #define eps 1e-6 using namespace std; const int N = 55; namespace mat ...

  2. BZOJ3534 [Sdoi2014]重建 【矩阵树定理】

    题目 T国有N个城市,用若干双向道路连接.一对城市之间至多存在一条道路. 在一次洪水之后,一些道路受损无法通行.虽然已经有人开始调查道路的损毁情况,但直到现在几乎没有消息传回. 辛运的是,此前T国政府 ...

  3. 【BZOJ3534】[SDOI2014] 重建(矩阵树定理)

    点此看题面 大致题意: 给你一张图,每条边有一定存在概率.求存在的图刚好为一棵树的概率. 矩阵树定理是什么 如果您不会矩阵树定理,可以看看蒟蒻的这篇博客:初学矩阵树定理. 矩阵树定理的应用 此题中,直 ...

  4. 【BZOJ3534】重建(矩阵树定理)

    [BZOJ3534]重建(矩阵树定理) 题面 BZOJ 洛谷 题解 这.... 矩阵树定理神仙用法???? #include<iostream> #include<cmath> ...

  5. luoguP3317 [SDOI2014]重建 变元矩阵树定理 + 概率

    首先,我们需要求的是 $$\sum\limits_{Tree} \prod\limits_{E \in Tree} E(u, v) \prod\limits_{E \notin Tree} (1 - ...

  6. [luoguP3317] [SDOI2014]重建(矩阵树定理)

    传送门 为了搞这个题又是学行列式,又是学基尔霍夫矩阵. 矩阵树定理 本题题解 无耻地直接发链接,反正我也是抄的题解.. #include <cstdio> #include <cma ...

  7. 【Luogu】P3317重建(高斯消元+矩阵树定理)

    题目链接 因为这个专门跑去学了矩阵树定理和高斯消元qwq 不过不是很懂.所以这里只放题解 玫葵之蝶的题解 某未知dalao的矩阵树定理 代码 #include<cstdio> #inclu ...

  8. 【算法】Matrix - Tree 矩阵树定理 & 题目总结

    最近集中学习了一下矩阵树定理,自己其实还是没有太明白原理(证明)类的东西,但想在这里总结一下应用中的一些细节,矩阵树定理的一些引申等等. 首先,矩阵树定理用于求解一个图上的生成树个数.实现方式是:\( ...

  9. @总结 - 7@ 生成树计数 —— matrix - tree 定理(矩阵树定理)与 prüfer 序列

    目录 @0 - 参考资料@ @0.5 - 你所需要了解的线性代数知识@ @1 - 矩阵树定理主体@ @证明 part - 1@ @证明 part - 2@ @证明 part - 3@ @证明 part ...

随机推荐

  1. WCF、WebAPI、WCFREST、WebService之间的区别总结(实用)

    在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Services.我分享一下我对 ...

  2. 【Linux】查看所使用的Linux系统是32位还是64 位的方法

    查看所使用的Linux系统是32位还是64 位的方法 方法一:getconf LONG_BIT # getconf LONG_BIT 1 1 我的Linux是32位!!! 方法二:arch # arc ...

  3. java数组创建

    java数组创建:int[] number = new int[10]; int[]:表明这是一个数组 new int[10]:给前面的数组类型的number变量分配10个int类型的空间大小

  4. 畅通工程(hdu1232)并查集

    畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  5. 【C#数据结构系列】树和二叉树

    线性结构中的数据元素是一对一的关系,树形结构是一对多的非线性结构,非常类似于自然界中的树,数据元素之间既有分支关系,又有层次关系.树形结构在现实世界中广泛存在,如家族的家谱.一个单位的行政机构组织等都 ...

  6. 【读书笔记】iOS-自定义视图的创建

    静态创建自定义视图就是以拖动的方法来创建. 动态创建自定义视图可以理解为使用代码来创建自定义视图. 参考资料:<iOS7开发快速入门>

  7. 【读书笔记】iOS-网络-解析响应负载

    Web Service可以通过多种格式返回结构化数据, 不过大多数时候使用的是XML与JSON.也可以让应用只接收HTML结构的数据.实现了这些Web Service或是接收HTML文档的应用必须能解 ...

  8. eclipse搭建hibernate环境

    一.打开eclipse,help=>Install New Software 输入:http://download.jboss.org/jbosstools/updates/stable/kep ...

  9. 用eclipse 搭建struts2环境

    一,下载struts2对应的jar包,(http://struts.apache.org/download.cgi#struts2514.1),我一般下载struts2.3版本的 二,打开eclips ...

  10. Android工程中javax annotation Nullable找不到的替代方案

    我们在某些Android开源库中会遇到下面的引用找不到的问题:import javax.annotation.Nonnull;import javax.annotation.Nullable; 其实A ...