HDU 2807
http://acm.hdu.edu.cn/showproblem.php?pid=2807
把矩阵相乘放在第二重循环,第三重循环只进行比较可以水过,优化的方法不懂
主要用这题练习floyd的写法
#include <iostream>
#include <cstdio>
using namespace std ;
const int INF=0xfffffff ;
int n,m ;
int dis[][] ;
int M[][][],c[][] ;
void mul(int a[][],int b[][])
{
int i,j,k ;
for(i= ;i<m ;i++)
for(j= ;j<m ;j++)
c[i][j]= ;
for(i= ;i<m ;i++)
for(j= ;j<m ;j++)
for(k= ;k<m ;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j] ;
}
int cmp(int x)
{
for(int i= ;i<m ;i++)
for(int j= ;j<m ;j++)
if(c[i][j]!=M[x][i][j])
return ;
return ;
}
void floyd()
{
for(int k= ;k<=n ;k++)
for(int i= ;i<=n ;i++)
for(int j= ;j<=n ;j++)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]) ;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
if(!n && !m)break ;
for(int i= ;i<=n ;i++)
{
for(int j= ;j<=n ;j++)
{
if(i==j)dis[i][j]= ;
else dis[i][j]=dis[j][i]=INF ;
}
}
for(int i= ;i<=n ;i++)
{
for(int j= ;j<m ;j++)
{
for(int k= ;k<m ;k++)
{
scanf("%d",&M[i][j][k]) ;
}
}
}
for(int i= ;i<=n ;i++)
{
for(int j= ;j<=n ;j++)
{
if(i==j)continue ;
mul(M[i],M[j]) ;
for(int k= ;k<=n ;k++)
{
if(i==k || j==k)continue ;
if(dis[i][k]==)continue ;
if(cmp(k))
{
dis[i][k]= ;
}
}
}
}
floyd() ;
int k ;
scanf("%d",&k) ;
while(k--)
{
int s,t ;
scanf("%d%d",&s,&t) ;
if(dis[s][t]!=INF)printf("%d\n",dis[s][t]) ;
else puts("Sorry") ;
}
}
return ;
}
HDU 2807的更多相关文章
- hdu 2807 The Shortest Path
http://acm.hdu.edu.cn/showproblem.php?pid=2807 第一次做矩阵乘法,没有优化超时,看了别人的优化的矩阵乘法,就过了. #include <cstdio ...
- hdu 2807 The Shortest Path(矩阵+floyd)
The Shortest Path Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- hdu 2807(矩阵+floyed)
The Shortest Path Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- HDU 5643 King's Game 打表
King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...
- hdu图论题目分类
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- HDU图论题单
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
随机推荐
- namenode 问题小记
问题1:namenode进程故障 Namenode挂掉,Namenode gc日志里面YGC报错promotion failed 现象描述 NameNode进程挂掉,Namenode gc日志里面YG ...
- kernel内核配置说明
内核过程中的配置这一步做详细的说明吧,总结一下,多数内容源于网上的多篇文章. 首先,配置时可能出现的选项,对其选择先来个说明吧. Typically, your choices for each op ...
- POJ2195:Going Home(费用流入门)
http://poj.org/problem?id=2195 #include <iostream> #include <stdio.h> #include <strin ...
- HDU5023:A Corrupt Mayor's Performance Art(线段树区域更新+二进制)
http://acm.hdu.edu.cn/showproblem.php?pid=5023 Problem Description Corrupt governors always find way ...
- 7.3 Models -- Creating And Deleting Records
一.Creating 1. 你可以通过调用在store中的createRecord方法来创建records. store.createRecord('post', { title: 'Rails is ...
- 高级Bash脚本编程(二)
高级Bash脚本编程(二) 退出 退出状态码 退出:exit 被用来结束一个脚本,它也返回一个值,并且这个值会传递给脚本的父进程,父进程会使用这个值做下一步的处理. 每个命令都会返回一个退出状态码,成 ...
- 两行python代码,你是否可猜到运行结果
两行python代码,你是否可猜到运行结果 参考: http://www.cnblogs.com/way_testlife/archive/2011/07/20/2111549.html#215689 ...
- 【转载】Java关键字之"transient"
原文出处:http://blog.csdn.net/lanxuezaipiao/article/details/16358677 transient的作用及使用方法 我们都知道一个对象只要实现了Ser ...
- c#pdf查看器
Free Spire.PDF for .NET is a Community Edition of the Spire.PDF for .NET, which is a totally free PD ...
- 使用javascript模拟常见数据结构(一)
数据结构和算法可算是每个程序员的必备技能,而随着前端工作的深入,对于数据结构的知识真的是越来越需要掌握了.好了,于是乎最近看了<javascript数据结构和算法>,算是对于后面的使用C语 ...