zoukankan      html  css  js  c++  java
  • HDU 2544 最短路(dijkstra+邻接矩阵)

    ( ̄▽ ̄)"

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int INF=10e7;
    const int MAXN=1010;
    int k,minn;
    int cost[MAXN][MAXN];
    int lowcost[MAXN];
    bool vis[MAXN];
    
    void dij(int n,int start)
    {
        for(int i=1;i<=n;i++)
        {
            lowcost[i]=INF;vis[i]=0;
        }
        lowcost[start]=0;
        for(int i=1;i<=n;i++)
        {
            k=-1,minn=INF;
            for(int i=1;i<=n;i++)
            {
                if(!vis[i]&&lowcost[i]<minn)
                    {minn=lowcost[i];k=i;}
            }
            if(k==-1) break;
            vis[k]=1;
            for(int i=1;i<=n;i++)
            {
                if(!vis[i]&&cost[k][i]>=0&&lowcost[k]+cost[k][i]<lowcost[i])
                {
                    lowcost[i]=lowcost[k]+cost[k][i];
                }
            }
        }
    }
    
    int main()
    {
        int n,m,a,b,c;
        while(scanf("%d%d",&n,&m)&&n!=0&&m!=0)
        {
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    if(i==j) cost[i][j]=0;
                    else cost[i][j]=INF;
                }
            }
            for(int i=1;i<=m;i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                cost[a][b]=cost[b][a]=c;
            }
            dij(n,1);
            printf("%d
    ",lowcost[n]);
        }
        return 0;
    }
  • 相关阅读:
    js 进阶笔记
    Move Zeroes
    笔记
    前端笔记
    PAI-AutoLearning 图像分类使用教程
    Redis Key过期通知
    Ubuntu 安装配置 JDK+Tomcat+Nginx
    Linux常用指令总结
    使用Openssl创建证书
    Python 操作Excel
  • 原文地址:https://www.cnblogs.com/atmacmer/p/5196876.html
Copyright © 2011-2022 走看看