网上有优化的方法 就是乘上一个一维的矩阵;现在还没有想通。想通了不上代码;

我用的就是普通的矩阵,压着时间过;只是多了一个判断条件,不加这个条件就超时;

#include<stdio.h>
#include<string.h>
#define INF 99999999
#define maxn 85
struct Mat
{
int mat[maxn][maxn];
}a[];
int n,m,map[maxn][maxn];
Mat operator * (Mat a,Mat b)
{
Mat c;
int i,j,k;
memset(c.mat,,sizeof(c.mat));
for(i=;i<m;i++)
for(j=;j<m;j++)
for(k=;k<m;k++)
{
c.mat[i][j]+=a.mat[i][k]*b.mat[k][j];
}
return c;
}
int ok(Mat aa,Mat bb)
{
int i,j;
for(i=;i<m;i++)
for(j=;j<m;j++)
{
if(aa.mat[i][j]!=bb.mat[i][j])
return ;
}
return ;
}
void init()
{
int i,j;
for(i=;i<=n;i++)
for(j=;j<=n;j++)
if(i==j)map[i][j]=;
else map[i][j]=INF;
}
void floyd()
{
int i,j,k;
for(i=;i<n;i++)
for(j=;j<n;j++)
for(k=;k<n;k++)
if(map[j][k]>map[j][i]+map[i][k])
map[j][k]=map[j][i]+map[i][k];
}
int main()
{
int i,j,k; while(scanf("%d%d",&n,&m)!=EOF)
{
if(!n&&!m)break;
init();
for(i=;i<n;i++)
{
for(j=;j<m;j++)
for(k=;k<m;k++)
scanf("%d",&a[i].mat[j][k]);
}
for(i=;i<n;i++)
{
for(j=;j<n;j++)
{
if(i==j)continue;
Mat c=a[i]*a[j];
for(k=;k<n;k++)
{
if(map[i][k]==)continue;//加上就不超时
if(i==k||j==k)continue;
if(ok(c,a[k]))
map[i][k]=;
}
}
}
/*
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d ",map[i][j]);
printf("\n");
}
*/
floyd();
int k;
scanf("%d",&k);
for(i=;i<k;i++)
{
int x ,y;
scanf("%d %d",&x,&y);
x--;y--;
if(map[x][y] >= INF)
printf("Sorry\n");
else printf("%d\n",map[x][y]);
}
}
}

hdu2807 矩阵乘法+floyd的更多相关文章

  1. POJ3613 Cow Relays [矩阵乘法 floyd类似]

    Cow Relays Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7335   Accepted: 2878 Descri ...

  2. poj3613:Cow Relays(倍增优化+矩阵乘法floyd+快速幂)

    Cow Relays Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7825   Accepted: 3068 Descri ...

  3. bzoj 1706: [usaco2007 Nov]relays 奶牛接力跑【矩阵乘法+Floyd】

    唔不知道怎么说--大概核心是把矩阵快速幂的乘法部分变成了Floyd一样的东西,非常之神 首先把点离散一下,最多有200个,然后建立邻接矩阵,a[u][v]为(u,v)之间的距离,没路就是inf 然后注 ...

  4. 【Floyd矩阵乘法】BZOJ1706- [usaco2007 Nov]relays 奶牛接力跑

    [题目大意] 给出一张无向图,求出恰巧经过n条边的最短路. [思路] 首先题目中只有100条边,却给出了10000个点(实际上最多只能有200个),离散化一下. 后面就是Floyd的新姿势,以前看过的 ...

  5. CF_576D_Flights for Regular Customers_矩阵乘法+倍增floyd+bitset+bfs

    CF_576D_Flights for Regular Customers_矩阵乘法+倍增floyd+bitset https://www.luogu.org/problemnew/show/CF57 ...

  6. bzoj 2165: 大楼【Floyd+矩阵乘法+倍增+贪心】

    1<<i的结果需要是long long的话i是long long是没用的--要写成1ll<<i--我别是个傻子吧 虽然写的是二进制贪心,但是我觉得二分可能更好写吧(但是会慢) ...

  7. 【floyd+矩阵乘法】POJ 3613 Cow Relays

    Description For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a rel ...

  8. hdu4920 Matrix multiplication 模3矩阵乘法

    hdu4920 Matrix multiplication Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 ...

  9. 如何使用矩阵乘法加速动态规划——以[SDOI2009]HH去散步为例

    对这个题目的最初理解 开始看到这个题,觉得很水,直接写了一个最简单地动态规划,就是定义 f[i][j]为到了i节点路径长度为j的路径总数, 转移的话使用Floyd算法的思想去转移,借助这个题目也理解了 ...

随机推荐

  1. 【读书笔记《Android游戏编程之从零开始》】6.Android 游戏开发常用的系统控件(TabHost、ListView)

    3.9 TabSpec与TabHost TabHost类官方文档地址:http://developer.android.com/reference/android/widget/TabHost.htm ...

  2. POJ 3150 Cellular Automaton --矩阵快速幂及优化

    题意:给一个环,环上有n块,每块有个值,每一次操作是对每个点,他的值变为原来与他距离不超过d的位置的和,问k(10^7)次操作后每块的值. 解法:一看就要化为矩阵来做,矩阵很好建立,大白书P157页有 ...

  3. 2014 Super Training #1 F Passage 概率DP

    原题: HDU 3366   http://acm.hdu.edu.cn/showproblem.php?pid=3366 本来用贪心去做,怎么都WA,后来看网上原来是一个DP题. 首先按P/Q来做排 ...

  4. 第20章 DLL高级技术(1)

    20.1 DLL模块的显式载入和符号链接 20.1.1 显式载入DLL模块 (1)构建DLL时,如果至少导出一个函数/变量,那么链接器会同时生成一个.lib文件,但这个文件只是在隐式链接DLL时使用( ...

  5. uGUI练习(一) Anchor

    一.练习步骤 如果用过NGUI的Anchor,我们知道在2.x的版本有UIAnchor组件(下图左),3.x版本中,每个UIWidget有自带的Anchors(下图右) 而uGUI的Anchor用起来 ...

  6. mysql及php命名规范

    一.mysql命名规范 1.设计原则 1) 标准化和规范化数据的标准化有助于消除数据库中的数据冗余.标准化有好几种形式,但 Third Normal Form(3NF)通常被认为在性能.扩展性和数据完 ...

  7. 002医疗项目-主工程模块yycgproject三层构建(三大框架的整合)

    先给出项目结构图:

  8. 【转】【Asp.Net】了解使用 ASP.NET AJAX 进行局部页面更新

    简介Microsoft的 ASP.NET 技术提供了一个面向对象.事件驱动的编程模型,并将其与已编译代码的优势结合起来.但其服务器端的处理模型仍存在技术本身所固有的几点不足: 进行页面更新需要往返服务 ...

  9. openresty 前端开发进阶一之http后端

    做前端开发,大多数情况下,都需要跟后端打交道,而最常见的方式则是通过http请求,进行通信. 在openresty中,通过http跟后端整合通信的方式又很多种,各有各的好处,可以根据情况交叉使用 1. ...

  10. Delphi7的HtmlParser使用方法

    uses HtmlParser procedure TForm4.Button1Click(Sender: TObject); var FNodes:IHtmlElement; aString:str ...