dijkstra + spfa

复制代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define INF 0x3f3f3f
int cnt=0,head[INF],dis[INF];
int n,m;
struct edge{
    int v;
    int next;
    int w;
}e[INF];
int add(int u,int v,int w){
    e[++cnt].v = v;
    e[cnt].w = w;
    e[cnt].next = head[u];
    head[u] = cnt;
}
struct node{
    int d,u;
    bool operator <(const node &rhs) const
    {
        return d > rhs.d;
    }
};
inline void dij(){
    memset(dis,0x3f3f,sizeof(dis));
    dis[1] = 0;
    priority_queue<node> q;
    q.push((node){1,0});
    while(!q.empty())
    {
        node fr = q.top();
        q.pop();
        int u = fr.u;
        int d = fr.d;
        if(d != dis[u]) continue;
        for(int i = head[u];i; i = e[i].next)
        {
            int v = e[i].v;
            int w = e[i].w;
            if(dis[u] + w < dis[v])
            {
                dis[v] = dis[u] + w;
                q.push((node){v,dis[v]});
            }
        }
    }
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i = 1;i <= m;i++)
    {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        add(x,y,z);
        add(y,x,z);
    }
    dij();
    printf("%d\n",dis[n]);
    return 0;
}
复制代码

spfa

复制代码
int spfa(){
    int che[INF],dis[INF];
    memset(che,0,sizeof(che));
    memset(dis,0x3f3f,sizeof(dis));
    dis[1] = 0;
    che[1] = 1;
    queue<node> q;
    q.push((node){1,0});
    while(!q.empty())
    {
        node fr = q.front();
        q.pop();
        che[fr.u]  = 0;
        int u = fr.u;
        int d = fr.d;
        for(int i=head[u];i;i=e[i].next)
        {
            int v = e[i].v;
            int w = e[i].w;
            if(dis[v] > dis[u] + w){
                dis[v] = dis[u] + w;
                if(!che[v]){
                    che[v] = 1;
                    q.push(v);
                }
            }
        }
    }
}
复制代码

 

posted @   leojiang  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示