首页 > 其他 > 详细

堆优化版dijkstra

时间:2019-10-11 22:03:59      阅读:84      评论:0      收藏:0      [点我收藏+]
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4+5;
struct node{
    int val,num;
    node(int newval,int newnum){val=newval;num=newnum;}
    bool operator<(const node &a) const{
      return val<a.val;
    }
};
vector<pair<int,int> > vec[N];
priority_queue<node> qu;
int dis[N];
int n,m,s;
void dij()
{
    dis[s]=0;
    qu.push(node(0,s));
    while(qu.size())
    {
        int front=qu.top().num;
        qu.pop();
        for(int i=0;i<vec[front].size();i++)
        {
            int to=vec[front][i].first,va=vec[front][i].second;
            if(dis[to]>dis[front]+va)
            {
                dis[to]=dis[front]+va;
                qu.push((node){dis[to],to});
            }
        }
    }
}
int main()
{
    int a,b,c;
    cin>>n>>m>>s;
    memset(dis,0x3f,sizeof(dis));
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d",&a,&b,&c);
        vec[a].push_back(make_pair(b,c));
    }
    for(int i=1;i<=n;i++)
        cout<<dis[i]<<endl;
    return 0;
}

  

堆优化版dijkstra

原文:https://www.cnblogs.com/zenghuan0620/p/11657192.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!