码迷,mamicode.com
首页 > 其他好文 > 详细

dijkstra+heap

时间:2017-04-08 17:06:05      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:ret   blog   push   include   stream   dijkstra   empty   pop   name   

#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);
                }
            }
        }
    }
}

  

dijkstra+heap

标签:ret   blog   push   include   stream   dijkstra   empty   pop   name   

原文地址:http://www.cnblogs.com/Heilce/p/6682195.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!