hdu 2807 The Shortest Path(矩阵+floyd)
The Shortest Path
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3164 Accepted Submission(s):
1030
represent by a matrix size of M*M. If city A, B and C satisfy that A*B = C, we
say that there is a road from A to C with distance 1 (but that does not means
there is a road from C to A).
Now the king of the country wants to ask me
some problems, in the format:
Is there is a road from city X to Y?
I have
to answer the questions quickly, can you help me?
indicating the number of cities in the country and the size of each city. The
next following N blocks each block stands for a matrix size of M*M. Then a
integer K means the number of questions the king will ask, the following K lines
each contains two integers X, Y(1-based).The input is terminated by a set
starting with N = M = 0. All integers are in the range [0, 80].
question the king asked, if there is a road from city X to Y? Output the
shortest distance from X to Y. If not, output "Sorry".
Sorry
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 85
#define INF 0x3f3f3f3f
using namespace std;
int n,m;
int map[N][N];
int a[N][N][N],tem[N][N]; void floyd()
{
int i,j,k;
for(k=; k<=n; k++)
for(i=; i<=n; i++)
for(j=; j<=n; j++)
if(map[i][j]>map[i][k]+map[k][j])
map[i][j]=map[i][k]+map[k][j];
} void getmap()
{
int i,j,k,x,y,z;
for(i=; i<=n; i++)
for(j=; j<=m; j++)
for(k=; k<=m; k++)
scanf("%d",&a[i][j][k]);
for(i=; i<=n; i++)
for(j=; j<=n; j++)
if(i==j) map[i][j]=;
else map[i][j]=INF;
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
{
if(i==j) continue;
memset(tem,,sizeof(tem));
for(x=; x<=m; x++)
for(y=; y<=m; y++)
{
tem[x][y]=;
for(z=; z<=m; z++) ///矩阵计算
tem[x][y]+=a[i][x][z]*a[j][z][y];
}
for(x=; x<=n; x++)
{
if(x==i||x==j)
continue;
int flag=;
for(y=; y<=m; y++)
{
for(z=; z<=m; z++)
{
if(tem[y][z]!=a[x][y][z]) ///比较是否完全相同
{
flag=;
break;
}
}
if(!flag)
break;
}
if(flag)
map[i][x]=;
}
}
}
floyd();
}
int main()
{
int i,j,k,x,y;
while(~scanf("%d%d",&n,&m))
{
if(n==&&m==)
break;
getmap();
scanf("%d",&k);
while(k--)
{
scanf("%d%d",&x,&y);
if(map[x][y]<INF)
printf("%d\n",map[x][y]);
else
printf("Sorry\n");
}
}
return ;
}
hdu 2807 The Shortest Path(矩阵+floyd)的更多相关文章
- 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 The Shortest Path
http://acm.hdu.edu.cn/showproblem.php?pid=2807 第一次做矩阵乘法,没有优化超时,看了别人的优化的矩阵乘法,就过了. #include <cstdio ...
- Hdu 4725 The Shortest Path in Nya Graph (spfa)
题目链接: Hdu 4725 The Shortest Path in Nya Graph 题目描述: 有n个点,m条边,每经过路i需要wi元.并且每一个点都有自己所在的层.一个点都乡里的层需要花费c ...
- HDU 4725 The Shortest Path in Nya Graph [构造 + 最短路]
HDU - 4725 The Shortest Path in Nya Graph http://acm.hdu.edu.cn/showproblem.php?pid=4725 This is a v ...
- hdu 3631 Shortest Path(Floyd)
题目链接:pid=3631" style="font-size:18px">http://acm.hdu.edu.cn/showproblem.php?pid=36 ...
- HDU 2224 The shortest path
The shortest path Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- HDU 4725 The Shortest Path in Nya Graph
he Shortest Path in Nya Graph Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged o ...
- (中等) HDU 4725 The Shortest Path in Nya Graph,Dijkstra+加点。
Description This is a very easy problem, your task is just calculate el camino mas corto en un grafi ...
- HDU 4725 The Shortest Path in Nya Graph(构图)
The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
随机推荐
- git中由readme.md文件引发的问题
在GitHub上建立一个仓库并且添加了readme.txt文件. 无论是push前先将远程仓库pull到本地仓库,还是强制push都会弹出这个问题. Github 禁用了TLS v1.0 and v1 ...
- ActiveMQ消息中间件
最近学习到ActiveMQ,之前也没有用过相关或者类似的工具,因此特地写个文章进行相关的学习记录. 相关参考博文:https://www.cnblogs.com/cyfonly/p/6380860.h ...
- 2018-2-13-C#-相对路径转绝对路径
title author date CreateTime categories C# 相对路径转绝对路径 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23 ...
- java如何访问memcache
1 Memcache是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的 ...
- 【等价的穿越】Burnside引理&Pólya计数法
Problem 起源: SGU 294 He's Circle 遗憾的是,被吃了. Poj有道类似的: Mission 一个长度为n(1≤n≤24)的环由0,1,2组成,求有多少本质不同的环. 实际上 ...
- CSS:命名规范心得分享
一个好的命名习惯(当然这里指的并不仅仅是CSS命名).不仅可以提高开发效率,而且有益于后期修改和维护. 假设我们当前使用的命名方式都是约定成俗的,所有人都是这样写,那么你去到一个新团队,或者别人来接手 ...
- Bigdecimal 相加结果为0的解决
之前很少使用这样的一个对象BigDecimal,今天在改需求的时候遇到了,结果坑爹的怎么相加最后都为零. 代码如下: BigDecimal totalAmount = new BigDecimal(0 ...
- C++通配符
#include<iostream>using namespace std;bool PathernMatch(char *pat, char *str){ char *s = NULL; ...
- python 模块的作用
- JavaScript--函数中()的作用
在函数中参数是函数的时候:function a(函数名) 与 function a(函数名()) 的区别: // 在函数里面() 是一个编组和立即执行的功能 /** * function autoPl ...