zoukankan      html  css  js  c++  java
  • HDOJ_1142 最短路 迪杰斯特拉+广搜

    本题的基本思路是想地杰斯特拉找出最短路,然后用广搜找出有多少个路

    这个题很让人崩溃,刚开始一直runtime error 搞得我一头雾水,高了半天,我map初始化的语句该做条件表达式就过了,不解

    今天大奔又弄个runtime error 问我类,我昨天在自己的电脑上交了,回头他交不了,我愣了愣,后来才发现得用c++提交,依然无解

    #include<stdio.h>
    #include<string.h>
    #define MAX 1000010
    //#define MAX_1 1001
    int map[1001][1001],dis[1001];
    int res[1001];
    int n,m;
    bool visit[1001];
    
    void dijkstra(int k)
    {
        int u,i,j,min,x;
        for(i=1;i<=n;++i)
        {
            visit[i]=false;
            dis[i]=map[2][i];
        }
        visit[2]=true;
        if(min==MAX)
        return ;
        for(i=2;i<=n;++i)
        {
            min=MAX;
            for(j=1;j<=n;++j)
            {
                if(!visit[j]&&min>dis[j])
                {
                    u=j;
                    min=dis[j];
                }
            }
            visit[u]=true;
            for(x=1;x<=n;++x)
            {
                if(!visit[x]&&dis[x]>dis[u]+map[x][u])
                {
                    dis[x]=dis[u]+map[x][u];
                }
            }
        }
    }
    int find(int v)
    {
        int i;
        if(res[v]!=-1)
            return res[v];
        if(v==2)
            return 1;
        res[v]=0;
        for(i=1;i<=n;++i)
        {
            if(map[i][v]!=MAX && dis[i]<dis[v])
                res[v]+=find(i);
        }
        return res[v];
    }
    
    
    int main()
    {
        int i,j,a,b,value;
        while(scanf("%d",&n)!=EOF&&n)
        {
            scanf("%d",&m);
            for(i=1;i<=n;++i)
                for(j=1;j<=n;++j)
                {
                    map[i][j]=MAX;
                 map[i][j] = i == j ? 0 : MAX; 
                }
            for(i=1;i<=m;++i)
            {
                scanf("%d%d%d",&a,&b,&value);
                map[a][b]=map[b][a]=value;
            }
            dijkstra(2);
            memset(res,-1,sizeof(res));
            printf("%d\n",find(1));
        }
        return 0;
    }
  • 相关阅读:
    MyBatis常见面试题以及解读
    如何防止sql注入攻击
    宝塔Linux面板基础命令
    Centos7配置静态ip
    宝塔Linux面板安装
    idea中安装阿里巴巴的代码规范插件
    idea中快速将类中的属性转为Json字符串的插件
    创建线程的四种方式
    sleep()方法与wait()方法的区别
    解决线程安全的几种方式
  • 原文地址:https://www.cnblogs.com/zibuyu/p/2650201.html
Copyright © 2011-2022 走看看