博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
A strange lift
阅读量:6433 次
发布时间:2019-06-23

本文共 1632 字,大约阅读时间需要 5 分钟。

题意:有n层楼层,如今在每一层有两个button,分别为up和down,按动button时,能够向上或向下跳动num[ i ]层;问是否能以最少的次数从A到B层,不能输出-1;

解析:构图,将从i层到按动button后跳转的楼层。看作连通状态,赋值为1,这样就转换成单源最短路问题;

#include
#include
#include
using namespace std;const int maxn = 500;const int Max = 0x3f3f3f3f;int num[ maxn ], mapp[ maxn ][ maxn ], dis[ maxn ], vis[ maxn ];int n, start, end; void Dijkstra( int start ){ memset( vis, 0, sizeof( vis ) ); vis[ start ] = 1; for( int i = 1; i <= n; ++i ){ dis[ i ] = mapp[ start ][ i ]; }/* for( int i = 0; i <= n; ++i ){ cout << dis[ i ] << endl; }*/ dis[ start ] = 0; for( int i = 1; i <= n; ++i ){ int temp = Max, k; for( int j = 1; j <= n; ++j ){ if( !vis[ j ] && temp > dis[ j ] ){ temp = dis[ k = j ]; } } if( temp == Max ) break; vis[ k ] = 1; for( int j = 1; j <= n; ++j ){ if( !vis[ j ] && dis[ j ] > dis[ k ] + mapp[ k ][ j ] ){ dis[ j ] = dis[ k ] + mapp[ k ][ j ]; // vis[ j ] = 1; } } } /*for( int i = 0; i <= n; ++i ){ cout << dis[ i ] << endl; }*/}int main(){ while( scanf( "%d", &n ) != EOF ){ if( !n ) break; scanf( "%d%d", &start, &end ); for( int i = 0; i <= n; ++i ){ for( int j = 0;j <= n; ++j ){ mapp[ i ][ j ] = Max; } } for( int i = 1; i <= n; ++i ){ scanf( "%d", &num[ i ] ); } for( int i = 1; i <= n; ++i ){ if( i + num[ i ] <= n ){ mapp[ i ][ i + num[ i ] ] = 1; } if( i - num[ i ] >= 1 ){ mapp[ i ][ i - num[ i ] ] = 1; } } Dijkstra( start ); if( dis[ end ] == Max ) puts( "-1" ); else{ printf( "%d\n", dis[ end ] ); } } return 0;}


本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5075843.html,如需转载请自行联系原作者

你可能感兴趣的文章
jQuery获取、设置title的值
查看>>
qq群文件管理
查看>>
Node.js v0.10.31API手工-DNS
查看>>
oracle的sqlldr并行导入表不要加索引
查看>>
修改linux系统编码
查看>>
RMI、Hessian、Burlap、Httpinvoker、WebService的比较
查看>>
A successful Git branching model
查看>>
【转】VS2013中如何解决error C4996: 'fopen'问题
查看>>
JavaHTTP下载视频
查看>>
grep命令做永久别名 显示颜色
查看>>
死锁以及锁等待
查看>>
入门视频采集与处理(BT656简介) 转
查看>>
Unity GUI选择与评价
查看>>
PHP于DIRECTORY_SEPARATOR任务
查看>>
c++ 时间与字符串转换
查看>>
SDE ST_Geometry SQL st_intersects查询很慢的解决方法
查看>>
Faster-rnnlm代码分析2 - HSTree的构造
查看>>
Strategic Game(匈牙利算法,最小点覆盖数)
查看>>
如何通过REST获取JENKINS的编译进度?
查看>>
HBase目录
查看>>