• P1135奇怪的电梯


    P1135奇怪的电梯

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int n,a,b;
    long long dis[210][210];
    
    int main(){
        //freopen("in","r",stdin);
        cin >> n >> a >> b;
        if(a == b){
            cout << 0 << endl;
            return 0;
        }
        for(int i = 0; i <= n; i++)
            for(int j = 0; j <= n; j++)
                dis[i][j] = 1e17;
            for(int i = 1; i <= n; i++){
                int x;
                cin >> x;
                if(i > x)
                    dis[i][i - x] = 1;
                if( i + x <= n)
                    dis[i][i + x] = 1;
            }
            for(int k = 1; k <= n; k++)
                for(int i = 1; i <= n; i++)
                    for(int j = 1; j <= n; j++)
                        if(dis[i][j] > dis[i][k] + dis[k][j])
                            dis[i][j] = dis[i][k] + dis[k][j];
            if(dis[a][b] == 1e17)
                cout << "-1";
            else cout << dis[a][b];
        return 0;
    }
    
    for(int i = 0; i < G.vexnum; i++)
        for(int j = 0; j < G.vexnum; j++){
            D[i][j] = G.arcs[i][j];
            //如果i j之间又弧;将j的前驱置为i;
            if(D[i][j] < MaxInt && i != j)
                Path[i][j] = i;
            //否则-1;
            else Path[i][j] = -1;
    
        }
    for(int k = 0; k < G.vexnum; k++)
        for(int i = 0; i < G.vexnum; i++)
            for(int j = 0; j < G.vexnum; j++)
                //从i经k到j的一条路径更短
                if(D[i][k] + D[k][j] < D[i][j]){
    
                    D[i][j] = D[i][k] + D[k][j];
                    //将j前驱改为k
                    Path[i][j] = Path[k][j];
                }
    
  • 相关阅读:
    前端导出excel文件
    promise和async/await的用法
    vue element 导出 分页数据的excel表格
    mac net.core 安装问题总结
    npm报MSBUILD错误的解决办法
    现大前端开发环境配置
    git 常用命令
    NodeJs (一)
    VUE 组件通信、传值
    vue-cli 第一章
  • 原文地址:https://www.cnblogs.com/xcfxcf/p/12301604.html
Copyright © 2020-2023  润新知