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

本文共 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

你可能感兴趣的文章
洛谷 P5019 铺设道路(差分)
查看>>
CSS层叠样式
查看>>
Pycharm初始创建项目和环境搭建(解决aconda库文件引入不全等问题)
查看>>
Spring Boot启动过程(二)
查看>>
使用Python命令创建jenkins的job
查看>>
第十二周编程总结
查看>>
暑假集训D15总结
查看>>
对类型“DevExpress.Xpf.Grid.GridControl”的构造函数执行符合指定的绑定约束的调用时引发了异常。...
查看>>
dogse入门指南
查看>>
Spring 整合quartz 时 定时任务被调用两次以及quartz 的配置
查看>>
oracle测试环境表空间清理
查看>>
余额宝技术架构读后感
查看>>
1.lamp网站构建
查看>>
狼人杀
查看>>
《lua程序设计(第二版)》学习笔记(五)-- 函数基础
查看>>
【CF EDU59 E】 Vasya and Binary String (DP)
查看>>
Catel(翻译)-为什么选择Catel
查看>>
angular轮播图
查看>>
指针小白:修改*p与p会对相应的地址的变量产生什么影响?各个变量指针的长度为多少?...
查看>>
文本相关CSS
查看>>