朴素的dijkstra模板

来源:互联网 发布:银河麒麟知乎 编辑:程序博客网 时间:2024/05/02 05:02
void dijkstra(int n,int dist[],EDGE edges[],int pre[],int src,int dest){    int _min,u,v,w;    bool visit[maxn]={0};    for (int i=1;i<=n;i++)    {        dist[i]=OO;    }    dist[src]=0;    for (int loop=1; loop<=n; loop++)    {        u=0;        _min=OO;        for (int i=1; i<=n; i++)        {            if (!visit[i]&&dist[i]<_min)            {                _min=dist[i];                u=i;            }        }        if (u==0) return;        visit[u]=true;        if (u==dest) return;        for (int i=head[u];i!=-1;i=edges[i].next)        {            v=edges[i].to;            w=edges[i].w;            if (!visit[v]&&dist[u]+w<dist[v])            {                dist[v]=dist[u]+w;                pre[v]=u;            }        }    }}

原创粉丝点击