博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spoj104 highways 生成树计数(矩阵树定理)
阅读量:5154 次
发布时间:2019-06-13

本文共 1451 字,大约阅读时间需要 4 分钟。

为了学一个矩阵树定理 从行列式开始学(就当提前学线代了。。

 

 

矩阵数定理:

截图来自于上述论文

 

裸题。

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 7 const int N=20; 8 const double eps=1e-9; 9 double G[N][N];10 11 double myabs(double x){
return x>0 ? x:-x;}12 13 double guass(int n)14 {15 double ans=1;16 for(int i=1;i<=n;i++)17 {18 int r=i;19 for(int j=i+1;j<=n;j++)20 if(myabs(G[j][i])>myabs(G[r][i])) r=j;21 if(r!=i) 22 {23 for(int j=1;j<=n;j++) swap(G[i][j],G[r][j]);24 ans*=-1;25 }26 if(G[i][i]==0) return 0;//一开始忘了判断,WA了好几发27 for(int j=i+1;j<=n;j++)//row28 {29 for(int k=n;k>=i;k--)//col30 G[j][k]-=G[j][i]/G[i][i]*G[i][k];31 }32 }33 34 for(int i=1;i<=n;i++) ans*=G[i][i];35 return myabs(ans);36 }37 38 int main()39 {40 //freopen("a.in","r",stdin);41 int T;42 scanf("%d",&T);43 while(T--)44 {45 int n,m;46 scanf("%d%d",&n,&m);47 memset(G,0,sizeof(G));48 for(int i=1;i<=m;i++)49 {50 int x,y;51 scanf("%d%d",&x,&y);52 G[x][x]++;G[y][y]++;53 G[x][y]=-1;G[y][x]=-1;//不是--,而是直接等于-154 }55 printf("%.0lf\n",guass(n-1));56 }57 return 0;58 }

 

转载于:https://www.cnblogs.com/KonjakJuruo/p/9667061.html

你可能感兴趣的文章
如何在面试中脱颖而出?
查看>>
mongoengine 学习 笔记
查看>>
创建使用模块与datetime模块使用
查看>>
Linux系统学习之 三:新手必须掌握的Linux命令3
查看>>
iOS高仿微信悬浮窗、忍者小猪游戏、音乐播放器、支付宝、今日头条布局滚动效果等源码...
查看>>
bugscan泄露代码解密
查看>>
利用Code128字体将文本转换为code128条形码
查看>>
Apicloud_(问题)P54提示错误:Uncaught SyntaxError: Unexpected token ) at main.html : 117
查看>>
使用Rss框架PHP开发流程
查看>>
Jmeter_模板&设置默认请求参数
查看>>
HTML注释
查看>>
Activiti 用户任务并行动态多实例(多用户执行流程)
查看>>
JAM的计数法
查看>>
[AngularJS + Webpack] require directives
查看>>
中间介
查看>>
在win32/安卓开发环境下编译BOX2D代码
查看>>
【JPA】字段访问、属性访问及混合访问
查看>>
斐波那契数列(Fibonacci)递归和非递归实现
查看>>
dbname, instance, sid
查看>>
HDU 2577 How to Type
查看>>