HYSBZ
来源:互联网 发布:冷笑话 知乎 编辑:程序博客网 时间:2024/06/08 19:04
这题真心不错,,刷新了我对matrix-tree定理的认识,
现在我对MT定理的认识是:
可以计算
有向图的每颗外/内向树的边权值的乘积的和
无向图图的每颗生成树的边权值的乘积的和
特别的,当边权为1时,就是生成树的数量
#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3f#define INFLL 0x3f3f3f3f3f3f3f3f#define FIN freopen("input.txt","r",stdin);#define mem(x,y) memset(x,y,sizeof(x));typedef unsigned long long ULL;typedef long long LL;#define fuck(x) cout<<x<<endl;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1typedef pair<pair<int, int>, int> PIII;typedef pair<int, int> PII;const double eps = 1e-10;const double PI = acos(-1);const int P = 1e9 + 7;const int MX = 333;int n;double mat[MX][MX];//会改变原来的矩阵,可以先备份一份double MT(double w[][MX],int n,int g) //g为有向图根节点编号,无向图随便填个{ if(n==1)return 1;//如果只有一个点就是1 //将根节点和0节点互换,注意会改变原先的矩阵 for(int i=0; i<n; i++)swap(w[0][i],w[g][i]); for(int i=0; i<n; i++)swap(w[i][0],w[i][g]); //化为上三角 for(int i=1; i<n; i++) { int t=i; for(int j=i; j<n; j++) if(fabs(w[j][i])>fabs(w[t][i])) { t=j; } if(t!=i) for(int j=i; j<n; j++) swap(w[i][j],w[t][j]); for(int j=i+1; j<n; j++) if(fabs(w[j][i])>eps) { double v=w[j][i]/w[i][i]; for(int k=i; k<=n+1; k++) w[j][k]=w[j][k]-w[i][k]*v; } } double ans=1; for(int i=1; i<n; i++)ans=ans*w[i][i]; return fabs(ans);}int main(){ scanf("%d",&n); { double p=1; for(int i=0; i<n; i++) for(int j=0; j<n; j++) { scanf("%lf",&mat[i][j]); if(i==j)continue; if(i<j)if(1-mat[i][j]<eps)p*=eps; else p*=(1-mat[i][j]); if(1-mat[i][j]<eps) mat[i][j]/=eps; else mat[i][j]/=(1-mat[i][j]); mat[i][j]*=-1; } for(int i=0; i<n; i++) { double cnt=0; for(int j=0; j<n; j++)cnt+=mat[i][j]; mat[i][i]=-1*cnt; } double ans=MT(mat,n,0); printf("%.10f\n",ans*p); } return 0;}
阅读全文
0 0
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- HYSBZ
- Chapter 4
- K 近邻算法 @ Python
- IOS 高仿boss直聘---优雅使用UIButton与UIScrollView打造滑动标签
- li 样式 不显示 overflow:hidden 导致Li前面样式不见的解决办法
- (系统)基于I/O文件处理的猜拳系统
- HYSBZ
- Chapter 5
- 在mfc中使用cef实现webkit的浏览器(一)-准备工作
- Flat front-end application structure
- Hadoop学习笔记 4
- AndroidStudio中使用代码管理软件添加忽略文件
- 插入排序 Java
- FastDFS分布式文件系统
- SpringBoot-单元测试