zoukankan      html  css  js  c++  java
  • HDU_2544_最短路

    题意:第一个路口是起点,第n个(最后一个)路口是终点,问最短路径。

    总结:第一个dijkstra。

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    using namespace std;
    #define N 105
    #define INF 0x7ffffff
    
    int map[N][N],visit[N],dis[N];
    
    int dijkstra(int s,int n)
    {
        memset(visit,0,sizeof(visit));
        for(int i=1;i<=n;i++)
            dis[i]=map[s][i];
        dis[s]=0;
        visit[s]=1;
        for(int i=1;i<=n;i++)
        {
            int tmp=INF,k;
            for(int j=1;j<=n;j++)
            {
                if(!visit[j]&&dis[j]<tmp)     ///找到离s最近的点
                {
                    tmp=dis[j];
                    k=j;
                }
            }
            if(tmp==INF)
                break;
            visit[k]=1;
            for(int j=1;j<=n;j++)
            {
                if(!visit[j]&&dis[j]>dis[k]+map[k][j])
                    dis[j]=dis[k]+map[k][j];
            }
        }
        return dis[n];
    }
    
    int main()
    {
        int n,m,a,b,c;
        while(~scanf("%d%d",&n,&m)&&n&&m)
        {
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                    map[i][j]=INF;
            for(int i=1;i<=m;i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                map[a][b]=map[b][a]=c;
            }
            printf("%d
    ",dijkstra(1,n));
        }
        return 0;
    }
  • 相关阅读:
    token
    id
    vim
    http_proxy
    brew
    认证
    go
    linux 磁盘管理
    vmware
    vmware fusion
  • 原文地址:https://www.cnblogs.com/jasonlixuetao/p/4770990.html
Copyright © 2011-2022 走看看