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

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

#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. 谷歌和HTTPS

    谷歌和HTTPS HTTPS被觉得是加强互联网安全的次要部分,而且使用广泛.google近来做了一份关于数据加密近况的陈述. 正在陈述的最新部分中,提到了google以及第三方构造对于数据加密所做的贡 ...

  2. python实现虚拟茶话会

    这个项目目的是编写一个聊天服务器,该聊天服务器的功能有: 服务器能同时接收来自不同用户的连接 允许用户同时操作 能够解释命令,例如,say或者logout命令 服务器容易扩展 这个项目里面我们会使用到 ...

  3. 第20章 DLL高级技术(3)

    20.4 函数转发器 (1)函数转发器原理(下图是利用Dependency Walker打开Kernel32.dll得到) ①图中CloseThreadpool*等4个函数转发到NTDLL中相应的函数 ...

  4. AC日记——逃跑的拉尔夫 codevs 1026 (搜索)

    1026 逃跑的拉尔夫  时间限制: 1 s    空间限制: 128000 KB    题目等级 : 黄金 Gold 题解       题目描述 Description   年轻的拉尔夫开玩笑地从一 ...

  5. Netty指定分隔的字符

    package org.zln.netty.five.part02; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; ...

  6. 17SpringMvc_在业务控制方法中写入包装User的模型来收集参数——解决问题

    在解决问题之前,我要说明一下jsp页面上填入信息,一个用户的信息比如用户的名字,用户的电话,用户的手机等等,在这个jsp页面上填好信息后,转到有个action处理这个信息.原理是什么? 在jsp页面上 ...

  7. mac上一键配置和安装adb驱动或者环境

    最近才使用的mac,老实说mac上要配置adb的环境不那么复杂,但是还是会让一些心不细或者动手能力不强的同学望而却步.那么到底有没有一个一键完成mac上adb和fastboot环境搭配的软件或者脚本呢 ...

  8. Elasticsearch 相关名词理解

    Cluster包含多个node,Indices不应该理解成动词索引,Indices可理解成关系数据库中的databases,Indices可包含多个Index,Index对应关系数据库中的databa ...

  9. Silverlight中使用MVVM:DataGrid中触发Button的Click事件

    方法1.使用RelativeSource向上查找DataContext中的命令,但是需要注意的是命令绑定需要写全 类似: DataContext.ReLoadCommand<Button Gri ...

  10. 从客户端中检测到有潜在危险的request.form值

    今天被这个问题卡住了,在用到CKEDITOR的时候,老是报错显示输入字符存在潜在危险,之后百度了一下,试了这两种方法: 解决方案一:    在.aspx文件头中加入这句:    <%@ Page ...