BOJ 1452
来源:互联网 发布:nginx module 下载 编辑:程序博客网 时间:2024/05/22 00:40
k元环问题,即邻接矩阵的k次幂
用矩阵快速幂加速
#include <cstdio>#include <cstring>#include <algorithm>#define N 110#define inf -1000000000using namespace std;int n,m;struct Matrix{int d[N][N];};Matrix multiply(Matrix a,Matrix b){Matrix res;int i,j,k;for(i=1;i<=n;i++)for(j=1;j<=n;j++){res.d[i][j]=inf;for(k=1;k<=n;k++){if(a.d[i][k] != inf && b.d[k][j] != inf)res.d[i][j]=max(res.d[i][j],a.d[i][k]+b.d[k][j]);}}return res;}Matrix solve(Matrix mp,int k){int i,j;Matrix res;for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(i==j) res.d[i][j]=0;else res.d[i][j]=inf;while(k){if(k%2){res=multiply(res,mp);}mp=multiply(mp,mp);k>>=1;}return res;}int main(){int i,j,k,t,T;int u,v,w;Matrix mp;scanf("%d",&T);for(t=1;t<=T;t++){scanf("%d %d %d",&n,&m,&k);for(i=1;i<=n;i++) //之前一直WA是这个初始化写在scanf之前了....for(j=1;j<=n;j++)mp.d[i][j]=inf;for(i=1;i<=m;i++){scanf("%d %d %d",&u,&v,&w);mp.d[u][v]=max(mp.d[u][v],w);}mp=solve(mp,k);int ans=inf;for(i=1;i<=n;i++) ans=max(ans,mp.d[i][i]);if(ans==inf) printf("No solution\n");else printf("%d\n",ans);}return 0;}
- BOJ 1452
- BOJ 288
- BOJ 394
- BOJ 396
- BOJ 385
- BOJ 519
- BOJ 93
- BOJ 204
- BOJ 672
- BOJ 1454
- BOJ 387
- BOJ 652
- BOJ 1461
- BOJ 1450
- boj contest, C++
- boj 215(树形DP)
- boj 212(栈模拟)
- o.boj 1022 Steps
- 自己动手搭建 Linux 0.12 编译环境 — Bochs
- 先来 项目三 多组织文件
- ACM 成长之路
- MFC对话框打印预览异常问题解决
- 数据类型转换
- BOJ 1452
- 三角形类(二)
- Hibernate的对象检索策略
- 解决win7下IE10只能以管理员身份运行
- 开发板自动获取IP和连接外网记录
- MFC对话框的打印预览实现
- C++语法笔记 – 数组 指针与字符串
- VS2005列表框下拉菜单不显示
- ajax加强复习