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

【一个蒟蒻的挣扎】单源最短路(Dijkstra)

时间:2019-11-12 20:31:11      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:tor   add   next   vector   +++   etc   priority   fir   ons   

赛前没啥时间好好解释了,还有三天2019CSP,大家加油啊!!!

ヾ(?°∇°?)??

背掉它就好啦!!!

我觉得我这一版打得还行就放上来了

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<cmath>
#include<vector>
using namespace std;
int n,m,s;
int dis[10001],first[10001];
inline void read(int &x)
{
    char c=getchar();
    int flag=1; x=0;
    while (c<0||c>9)
    {
        if (c==-) flag=-1;
        c=getchar();
    }
    while (c>=0&&c<=9)
    {
        x=x*10+c-0;
        c=getchar();
    }
    x*=flag;
}
struct edge
{
    int next,to,v;
    edge()
    {
    }
    edge(int a,int b,int c)
    {
        next=a; to=b; v=c;
    }
}E[10004];
struct heap
{
    int to,v;
    heap()
    {
    }
    heap(int a,int b)
    {
        to=a; v=b;
    }
};
priority_queue<heap> h;
inline bool operator < (const heap &a,const heap &b)
{
    return a.v>b.v;
}
int tot;
void add_to_edge(int a,int b,int c)
{
    E[++tot]=edge(first[a],b,c);
     first[a]=tot;
}
void add_to_heap(int p)
{
    for (int i=first[p]; i; i=E[i].next)
    {
        if (dis[E[i].to]==-1)
        h.push(heap(E[i].to,dis[p]+E[i].v)); 
    } 
}
void dijkstra(int s)
{
    while (!h.empty())
    {
        h.pop();
    }
    memset(dis,-1,sizeof(dis));
    dis[s]=0;
    add_to_heap(s);
    while (!h.empty())
    {
        if (dis[h.top().to]!=-1)
        {
            h.pop();
            continue;
        }
        int p=h.top().to;
        dis[p]=h.top().v;
        h.pop();
        add_to_heap(p);
    }
}
int main()
{
    read(n); read(m); read(s);
    for (int i=1; i<=m; i++)
    {
        int x,y,z;
        read(x); read(y); read(z);
        add_to_edge(x,y,z);
    }
    dijkstra(s);
    for (int i=1; i<=n; i++)
    cout<<dis[i]<<" ";
    return 0;
}

2019CSP-S    RP+++++

【一个蒟蒻的挣扎】单源最短路(Dijkstra)

标签:tor   add   next   vector   +++   etc   priority   fir   ons   

原文地址:https://www.cnblogs.com/Phantomhive/p/11844451.html

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