当前位置: 首页 > article >正文

[牛客]公交线路(dijkstra+链式前向星)

登录—专业IT笔试面试备考平台_牛客网

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long ll;
const int N=1e6+5,M=1e8+5;
int cnt=0,head[N];
int n,m,s,t;
struct node
{
    int v,w,next;
}edge[M];
void addedge(int u,int v,int w)
{
    cnt++;
    edge[cnt].v=v;
    edge[cnt].w=w;
    edge[cnt].next=head[u];
    head[u]=cnt;
}
bool vis[N];
int dis[N];
void dijkstra()
{
    for(int i=1;i<=n;i++)dis[i]=INT_MAX;
    int curr=s;
    dis[s]=0;
    int minn;
    while(!vis[curr])
    {
        vis[curr]=true;
        for(int i=head[curr];i>0;i=edge[i].next)
        {
            if(!vis[edge[i].v] && dis[edge[i].v]>dis[curr]+edge[i].w)
            {
                dis[edge[i].v]=dis[curr]+edge[i].w;
            }
        }
        minn=INT_MAX;
        for(int i=1;i<=n;i++)
        {
            if(!vis[i] && minn>dis[i])
            {
                minn=dis[i];
                curr=i;
            }
        }
    }
}
int main()
{
    cin>>n>>m>>s>>t;
    for(int i=0;i<m;i++)
    {
        int a,b,v;
        cin>>a>>b>>v;
        addedge(a,b,v),addedge(b,a,v);
    }
    dijkstra();
    if(!vis[t])cout<<-1;
    else cout<<dis[t];
}


http://www.kler.cn/a/521711.html

相关文章:

  • 02.05、链表求和
  • Ceph:关于Ceph 中使用 RADOS 块设备提供块存储的一些笔记整理(12)
  • 【数据结构】_链表经典算法OJ:环形链表的约瑟夫问题
  • 在线免费快速无痕去除照片海报中的文字logo
  • 鲁滨逊漂流记读后感
  • ShenNiusModularity项目源码学习(7:数据库结构)
  • Redis(4)常用命令介绍
  • 27. C语言 强制类型转换详解
  • Linux的中断上半部和中断下半部的概念,并利用任务队列(Tasklet)实现中断下半部的处理
  • 常见缓存算法汇总
  • Java 网络原理 ②-IP协议
  • PPT添加与管理批注的操作指南
  • C语言【基础篇】之流程控制——掌握三大结构的奥秘
  • 如何使用MongoDB进行数据存储?
  • JS中对数组的操作哪些会改变原数组哪些不会?今天你一定要记下!
  • Aquatronica Control System敏感信息泄露漏洞复现(附脚本)
  • 如何运用python爬虫爬取知网相关内容信息?
  • 05-机器学习-数据标注
  • CSAPP学习:前言
  • 《使用通道 Transformer 进行多尺度特征融合,引导热图像超分辨率》学习笔记
  • 浅析百度AOI数据与高德AOI数据的差异性
  • 【微服务与分布式实践】探索 Eureka
  • 【elasticsearch】如何更新许可证(License)
  • AWTK 骨骼动画控件发布
  • [创业之路-270]:《向流程设计要效率》-2-企业流程架构模式 POS架构(规划、业务运营、支撑)、OES架构(业务运营、使能、支撑)
  • 【蓝桥杯嵌入式组入门与进阶】1.开发板资源(实物)和原理图的介绍1