zoukankan      html  css  js  c++  java
  • hdu1874 最短路模板题

    之所以做了第二道模板题还要写是因为发现了一些自己的问题

    用的是dij 最简单的松弛

    需要注意的地方是松弛的时候 判断dis[i]<dis[w]+tance[w][i]时 还要再判断 vis[i] 要保证这个点没有成为过最小点 即这个点不会是已经被松弛过的点 

    输入的时候要注意 可能会有重边的输入 每次输入的时候进行一次判断 如果输入的是较大值 就不用更换了

    关于memset的使用 它只能用来设置0与-1 别的值会出现莫名的错误

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int dis[205];
    int tance[205][205];
    int vis[205];
    int n,m;
    int s,t;
    void sc()
    {
        vis[s]=1;
        for(int k=1;k<n;k++)
        {
            int minn=99999999;
            int w=s;
            for(int i=1;i<=n;i++)
            {
                if(dis[i]<minn&&vis[i]==0)
                {
                    w=i;
                    minn=dis[i];
                }
            }
    
                vis[w]=1;
                for(int i=1;i<=n;i++)
                {
                    if(dis[i]>dis[w]+tance[w][i]&&vis[i]==0)
                    {
                        dis[i]=dis[w]+tance[w][i];
                    }
                }
    
        }
        return ;
    
    }
    int main(){
    while(~scanf("%d%d",&n,&m))
    {
        int inf=99999999;
        memset(vis,0,sizeof(vis));
        for(int i=0;i<202;i++)
            for(int k=0;k<202;k++)
        {
            tance[i][k]=inf;
        }
        int a,b,c;
        for(int i=0;i<m;i++)
        {
            scanf("%d%d%d",&a,&b,&c);
            {
                if(tance[a+1][b+1]>c)
                {
                    tance[a+1][b+1]=c;
                    tance[b+1][a+1]=c;
                }
            }
        }
        scanf("%d%d",&s,&t);
        s+=1;
        t+=1;
        for(int i=1;i<=n;i++)
        {
            tance[i][i]=0;
            dis[i]=tance[s][i];
        }
        dis[s]=0;
    
        sc();
    
    
        if(dis[t]==99999999)
            printf("-1
    ");
        else printf("%d
    ",dis[t]);
    }
    }
    

      

  • 相关阅读:
    使用JS对中文字符串进行utf8的Base64编码
    subprocess理解
    25组新鲜出炉的有用图标集
    jQuery UI 1.8.9 发布
    正则匹配拼音
    jQuery Mobile 教程 (1)
    10款精选的用于构建良好易用性网站的jQuery插件
    Html 5 video/audio 格式转换 ogg
    10个有用的jquery 图片插件
    asp.net MVC 权限设计(续)
  • 原文地址:https://www.cnblogs.com/rayrayrainrain/p/5186276.html
Copyright © 2011-2022 走看看