首页 > 其他分享 >hdu-1548

hdu-1548

时间:2023-03-03 13:02:56浏览次数:41  
标签:hdu 210 dij int anss namespace 1548 include

搜索做着做着成最短路径了。。

dij

本层可以直接到达的层数距离为1 否则为无穷大

#include<stdio.h>
#include<iostream>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>
#include<algorithm>
#include<vector>
#include<string.h>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<sstream>
#include<time.h>
#include<utility>
#include<malloc.h>
#include<stdexcept>

using namespace std;

int n,a,b,m;
int p[210][210];
int q[210];
int d[210];
int vis[210];
int k;

void dij(int s)
{
    for(int i=1;i<=n;i++)
    {
        d[i] = p[s][i];
        vis[i] = 0;
    }

    d[s] = 0;
    vis[s] = 1;

    for(int i=1;i<=n;i++)
    {
        int minn = 10000000;
        k=s;
        for(int j =1;j<=n;j++)
        {
            if (!vis[j] && d[j] < minn)
            {
                minn = d[j];
                k=j;
            }
        }
        if (minn == 10000000)
            return ;
        vis[k] = 1;

        for(int j=1;j<=n;j++)
        {
            if (!vis[j] && (minn+p[k][j]) < d[j])
                d[j] = minn + p[k][j];
        }
    }
}

int main ()
{
    while (scanf("%d %d %d",&n,&a,&b)!=EOF && n)
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if (i!=j)
                    p[i][j] = p[j][i] = 10000000;
                else
                    p[i][j] = 0;
            }
        }

        for(int i=1;i<=n;i++)
        {
            scanf("%d",&q[i]);
            if (i + q[i] <=n)
            {
                p[i][q[i]+i] = 1;
            }
            if (i-q[i] >=1)
            {
                p[i][i-q[i]] = 1;
            }
        }
        dij(a);

        int anss = d[b];
        if (anss<10000000)
            cout<<anss<<endl;
        else
            printf("-1\n");
    }
    return 0;
}



标签:hdu,210,dij,int,anss,namespace,1548,include
From: https://blog.51cto.com/u_15990681/6098474

相关文章

  • hdu-1253
    http://acm.hdu.edu.cn/showproblem.php?pid=1253这道水题#include<stdio.h>#include<iostream>#include<math.h>#include<stdlib.h>#include<......
  • hdu-2821
    http://acm.hdu.edu.cn/showproblem.php?pid=2821不要被题目吓到,认真读题还是好理解的#include<stdio.h>#include<iostream>#include<string.h>#include<math.h......
  • HDU-5112-A Curious Matt (2014ACM/ICPC北京赛区现场赛A题!)
    http://acm.hdu.edu.cn/showproblem.php?pid=5112排序之后计算就好开始用cin超时了#include<stdio.h>#include<iostream>#include<math.h>#include<stdlib.h>#......
  • hdu-5122
    http://acm.hdu.edu.cn/showproblem.php?pid=5122简单题#include<stdio.h>#include<iostream>#include<math.h>#include<stdlib.h>#include<ctype.h>#include......
  • HDUOJ 2041-2055
    2041超级楼梯ProblemDescription有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input输入数据首先包含一个整数N,表示测试实......
  • Problem C HDU - 5687
    现在有个字典要支持一下操作 1、insert:往神奇字典中插入一个单词  2、delete:在神奇字典中删除所有前缀等于给定字符串的单词  3、search:查询是否在神奇......
  • 统计难题 HDU - 1251
     给一些字符串,问以某个串为前缀的串有几个 #include<iostream>#include<algorithm>#include<cstring>usingnamespacestd;constintN=5e5+4;charnum[80]......
  • Reading comprehension HDU - 4990
    ans=0;   for(i=1;i<=n;i++)    {     if(i&1)ans=(ans*2+1)%m;     elseans=ans*2%m;    } ......
  • HDU 4081 Qin Shi Huang's National Road System(次小树,4级)
    A- QinShiHuang'sNationalRoadSystemTimeLimit:1000MS     MemoryLimit:32768KB     64bitIOFormat:%I64d&%I64uSubmit ​​Status​​......
  • hdu 4284 Travel(压缩DP,4级)
    TravelTimeLimit:10000/5000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):2641    AcceptedSubmission(s):724......