zoukankan      html  css  js  c++  java
  • dijkstra+heap

    #include <iostream>
    #include <queue>
    #include <vector>
    using namespace std;
    const int N=405;
    struct rec
    {
        int v,w;
    };
    vector<rec> edge[N*N];
    int n,st,ed;
    __int64 dis[N*N];
    bool vis[N*N];
    struct cmp
    {
        bool operator()(int a,int b)
        { 
            return dis[a]>dis[b];
        } 
    };
    void Dijkstra()
    {
        priority_queue<int,vector<int>,cmp> Q;
        memset(dis,-1,sizeof(dis));
        memset(vis,0,sizeof(vis));
        int i,u,v;
        Q.push(st);
        dis[st]=0;
        while(!Q.empty())
        {
            u=Q.top();
            Q.pop();
            vis[u]=0;
            if(u==ed)
                break;
            for(i=0;i<edge[u].size();i++)
            {
                v=edge[u][i].v;
                if(dis[v]==-1 || dis[v]>dis[u]+edge[u][i].w)
                {
                    dis[v]=dis[u]+edge[u][i].w;
                    if(!vis[v])
                    {
                        vis[v]=1;
                        Q.push(v);
                    }
                }
            }
        }
    }
    

      

  • 相关阅读:
    SQL之层次查询
    GROUP函数
    SQL之统计
    正则表达式
    聚合函数,分析函数
    oracle函数
    Vue3.0优化
    浅谈FC
    短链接生成原理
    Vue路由传参
  • 原文地址:https://www.cnblogs.com/Heilce/p/6682195.html
Copyright © 2011-2022 走看看