hdu 2807 The Shortest Path(矩阵计算+Floyd)
来源:互联网 发布:美工运营对骂gif 编辑:程序博客网 时间:2024/05/29 10:56
http://acm.split.hdu.edu.cn/showproblem.php?pid=2224
题目大意:
城市一共有n个地点,每个地点是一个m*m的矩阵,当a*b=c时,说明存在一条从a指向c的边
解题思路:
矩阵计算,并且判断a与c是否连接,然后求出最短路即可。
#include<iostream>#include<cstring>#include<cstdio>#define INF 0x3f3f3f3f using namespace std;const int maxn=85;int n,m,a[maxn][maxn][maxn],dp[maxn][maxn],ans[maxn][maxn];void Floyd(){ for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);}void check(int x,int i,int j){ for(int y=1;y<=m;y++) for(int z=1;z<=m;z++) if(ans[y][z]!=a[x][y][z]) return ; dp[i][x]=1;}void get_dp(){ for(int i=0;i<=n;i++) //初始化 for(int j=0;j<=n;j++) dp[i][j]=(i==j)?0:INF; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(i==j) continue; memset(ans,0,sizeof(ans)); for(int x=1;x<=m;x++) //矩阵相乘 for(int y=1;y<=m;y++) { ans[x][y]=0; for(int z=1;z<=m;z++) ans[x][y]+=a[i][x][z]*a[j][z][y]; } for(int x=1;x<=n;x++) //检查是否有 a*b=c 即a是否可以到达c { if(x==i||x==j) continue; check(x,i,j); } } }} int main(){ while(cin>>n>>m&&(n||m)) { for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) for(int k=1;k<=m;k++) cin>>a[i][j][k]; get_dp(); Floyd(); int t,x,y; cin>>t; while(t--) { cin>>x>>y; if(dp[x][y]==INF) cout<<"Sorry"<<endl; else cout<<dp[x][y]<<endl; } } return 0;}
阅读全文
0 0
- hdu 2807 The Shortest Path(矩阵计算+Floyd)
- hdu 2807 The Shortest Path(矩阵相乘+floyd)
- HDU 2807 The Shortest Path(矩阵相乘+Floyd)
- HDU - 2807The Shortest Path(矩阵相乘+Floyd)
- hdu 2807 The Shortest Path 优化矩阵运算+floyd
- hdu 2807 The Shortest Path(矩阵)
- Hdu 2807 The Shortest Path 矩阵相乘
- HDU 2807 The Shortest Path 把矩阵抽象成点+Floyd
- hdu 2807 The Shortest Path【暴力/矩阵判等优化+Floyd】
- HDU2807:The Shortest Path(矩阵乘法+快速矩阵比较+Floyd)
- HDU 2807 The Shortest Path 矩阵运算+最短路
- hdu 3631 Shortest Path(floyd插点法)
- hdu 3631 Shortest Path(Floyd)
- hdu 3631 Shortest Path(Floyd)
- hdu 3631 Shortest Path (floyd)
- HDU 5636 Shortest Path(Floyd)
- hdu 2807 The Shortest Path
- hdu 2807 The Shortest Path
- 利用 Python 进行数据分析之IPython (一)
- 通过存储控制器访问外设
- MYSQL存储引擎特性及选择
- 最长上升子序列LIS
- 【C#】用EmguCV 绘制各种轮廓线
- hdu 2807 The Shortest Path(矩阵计算+Floyd)
- 使用tensorflow:LSTM神经网络预测股票(二)
- ASP.NET Web.config
- 【设计模式系列】之设计模式概述
- 【设计模式系列】之单利模式
- ActivityLifecycleCallbacks 实现app中所有Activity实例查找
- Javascript之变量作用域
- OSGi初识
- Javascript之函数模型