zoukankan      html  css  js  c++  java
  • hdu 2544

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <queue>
    #include <stack>
    #include <list>
    
    using namespace std;
    
    const int maxn = 110;
    const int oo = 1e9;
    
    int Map[maxn][maxn];
    
    void Init(int n)
    {
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=n; j++)
            {
                if(i==j)
                    Map[i][j] = 0;
                else
                    Map[i][j] = oo;
            }
        }
    }
    int dist[maxn];
    int visit[maxn];
    
    int dij(int n)
    {
        for(int i=1; i<=n; i++)
        {
            dist[i] = Map[1][i];
            visit[i] = 0;
        }
        visit[1] = 1;
        for(int i=1; i<=n; i++)
        {
            int Min = oo;
            int index;
            for(int j=1; j<=n; j++)
            {
                if(!visit[j]&&dist[j]<Min)
                {
                    Min = dist[j];
                    index = j;
                }
            }
            visit[index] = 1;
            for(int j=1; j<=n; j++)
            {
                if(!visit[j]&&dist[j]>Min+Map[index][j])
                {
                    dist[j] = Min+Map[index][j];
                }
            }
    
        }
        return dist[n];
    }
    
    int main()
    {
        int n, m;
        while(scanf("%d%d",&n,&m), n+m)
        {
            Init(n);
            int a,b,c;
            for(int i=1; i<=m; i++)
            {
                scanf("%d %d %d",&a, &b, &c);
                Map[a][b] = c;
                Map[b][a] = c;
            }
            int ans = dij(n);
            printf("%d
    ", ans);
    
        }
    
        return 0;
    }
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <map>
    
    using namespace std;
    
    const int oo = 1e9;
    const int maxn = 110;
    
    int Map[maxn][maxn];
    
    void Init(int n)
    {
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=n; j++)
            {
                if(i!=j)
                Map[i][j] = oo;
                else
                Map[i][j] = 0;
            }
        }    
    }
    int main()
    {
        int n, m;
        while(scanf("%d%d", &n, &m),m+n)
        {
            int a,b,c;
            Init(n);
            for(int i=1; i<=m; i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                Map[a][b] = c;
                Map[b][a] = c;
            }
            
            for(int k=1; k<=n; k++)
            {
                for(int i=1; i<=n; i++)
                {
                    for(int j=1; j<=n; j++)
                    {
                        if(Map[i][k]+Map[k][j]<Map[i][j])
                        {
                            Map[i][j] = Map[i][k] + Map[k][j];
                        }
                    }
                }
            }
            printf("%d
    ", Map[1][n]);
        }
        
        return 0;
    }
  • 相关阅读:
    IsPostBack
    多次点击Button后DropDownList选中的值变为默认值?
    数据表数据的复制
    使用DriverManager获取数据库连接
    通过Driver获取数据库连接
    URL学习笔记
    使用UDP进行数据发送的实例一
    利用Socket 客户端---->服务端 传送文件到指定路径,并返回一个友好的回馈
    关于TCP的两个小练习_第一个博客~
    oracle-19c-单实例安装-一键式脚本
  • 原文地址:https://www.cnblogs.com/mengzhong/p/5267884.html
Copyright © 2011-2022 走看看