zoukankan      html  css  js  c++  java
  • hdu 2586

    //spfa算法求最短路,邻接表的讲解参考:http://www.cnblogs.com/mengzhong/p/4713421.html

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<cctype>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<algorithm>
    
    using namespace std;
    typedef long long LL;
    #define N 100010
    #define INF 0x3f3f3f3f
    
    int n, m, head[N], k, dist[N], vis[N], used[N];
    struct node
    {
        int v, len, next;
    } maps[N];
    
    void add(int u, int v, int len)
    {
        maps[k].v=v;
        maps[k].len=len;
        maps[k].next=head[u];
        head[u]=k++;
    }
    
    int spfa(int a, int b)
    {
        memset(vis, 0, sizeof(vis));
        memset(used, 0, sizeof(used));
        for(int i=0; i<=n; i++)
            dist[i]=INF;
        int P;
        queue<int> q;
        q.push(a);
        dist[a]=0;
        used[a]=1;
        vis[a]=1;
    
        while(q.size())
        {
            P=q.front();
            //vis[P]=0;
            q.pop();
            for(int i=head[P]; i!=-1; i=maps[i].next)
            {
                int v=maps[i].v;
                if(dist[v]>maps[i].len+dist[P])
                    dist[v]=maps[i].len+dist[P];
                if(vis[v])
                    continue;
                q.push(v);
                vis[v]=1;
                used[v]++;
                if(used[v]>=n)
                    ;
            }
        }
        return dist[b];
    }
    
    int main()
    {
        int T, a, b, c;
        scanf("%d", &T);
    
        while(T--)
        {
            k=1;
            memset(head, -1, sizeof(head));
            scanf("%d%d", &n, &m);
            for(int i=0; i<n-1; i++)
            {
                scanf("%d%d%d", &a, &b, &c);
                add(a, b, c);
                add(b, a, c);
            }
            while(m--)
            {
                scanf("%d%d", &a, &b);
                int ans=spfa(a, b);
                printf("%d
    ", ans);
            }
        }
        return 0;
    }
  • 相关阅读:
    js人工智能对话框
    html 实现相册
    thinkphp5 三种重定向(跳转)
    thinkphp5 分页实现
    常用的Mysql数据库操作语句大全
    FormData之file图片上传
    FormData对象
    input file 上传图片时限制格式
    form 中Enctype=multipart/form-data 的作用
    thinkphp5 不刷新退出
  • 原文地址:https://www.cnblogs.com/9968jie/p/5801728.html
Copyright © 2011-2022 走看看