zoukankan      html  css  js  c++  java
  • hdu---1874---畅通工程续

    http://acm.hdu.edu.cn/showproblem.php?pid=1874

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <cmath>
    #include<vector>
    #include<algorithm>
    using namespace std;
    
    const int maxn=100007;
    const int INF=0x3f3f3f3f;
    
    int maps[1007][1007];
    int dist[maxn];
    int vis[maxn];
    int n, m;
    int S, E;
    
    void Init()
    {
        memset(vis, 0, sizeof(vis));
        for(int i=0; i<=n; i++)
        {
            for(int j=0; j<=n; j++)
                maps[i][j]=(i==j)?0:INF;
            dist[i]=INF;
        }
    }
    
    int dij()
    {
        for(int i=0; i<n; i++)
            dist[i]=maps[S][i];
        vis[S]=1;
    
        for(int i=0; i<n; i++)
        {
            int Min=INF;
            int index;
    
            for(int j=0; j<n; j++)
            {
                if(!vis[j]&&dist[j]<Min)
                {
                    Min=dist[j];
                    index=j;
                }
            }
    
            vis[index]=1;
    
            for(int j=0; j<n; j++)
                if(!vis[j]&&dist[j]>Min+maps[index][j])
                    dist[j]=Min+maps[index][j];
        }
        return dist[E];
    }
    int main()
    {
        while(~scanf("%d %d", &n, &m))
        {
            Init();
            while(m--)
            {
                int u, v, w;
                scanf("%d %d %d", &u, &v, &w);
                maps[u][v]=maps[v][u]=min(maps[u][v], w);
            }
    
            scanf("%d %d", &S, &E);
            int ans=dij();
    
            if(ans>=INF)
                printf("-1
    ");
            else
                printf("%d
    ", ans);
        }
    }
  • 相关阅读:
    ref和out的区别
    final、finally、finalize的区别
    get和post的区别
    什么是事务
    锁的详细
    什么是游标
    什么是存储过程
    委托的来由
    多线程的秘密
    String str=null; 和String str=""的区别
  • 原文地址:https://www.cnblogs.com/w-y-1/p/5749887.html
Copyright © 2011-2022 走看看