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

【路径——Dijkstra】

题目

代码

#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
typedef pair<int, int> PII;
const int N = 2025, M = N * N;
int h[N], e[M], ne[M], w[M], idx;
int dist[N];
int n = 2021;
void add(int a, int b, int c)
{
    w[idx] = c, e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}
int dijkstra()
{
    memset(dist, 0x3f, sizeof dist);
    priority_queue<PII, vector<PII>, greater<PII>> pq;
    pq.push({0, 1}), dist[1] = 0;

    while (pq.size())
    {
        auto u = pq.top();
        pq.pop();
        if (dist[u.y] < u.x)
            continue;

        for (int i = h[u.y]; ~i; i = ne[i])
        {
            int j = e[i];
            if (dist[j] > dist[u.y] + w[i])
            {
                dist[j] = dist[u.y] + w[i];
                pq.push({dist[j], j});
            }
        }
    }

    return dist[2021];
}
int main()
{
    memset(h, -1, sizeof h);
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            if (i != j && abs(i - j) <= 21)
                add(i, j, i * j / __gcd(i, j));
        }
    }

    cout << dijkstra();
}


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

相关文章:

  • uniapp实现在card卡片组件内为图片添加长按保存、识别二维码等功能
  • AIA - APLIC之三(附APLIC处理流程图)
  • 如何监控批量写入的性能瓶颈?
  • 算法5--位运算
  • w~自动驾驶~合集16
  • Centos 下安装 GitLab16.2.1
  • Decision Tree Regressor (决策树) --- 论文实战
  • Apache Calcite - 查询优化之自定义优化规则
  • 用Python设置、更新和获取Excel单元格的值
  • 智能医疗文档处理:开源OCR系统解析
  • 使用 PyCharm 构建 FastAPI 项目:零基础入门 Web API 开发
  • DDR Study - LPDDR4 TTR/PPR/ECC/PASR/DBI
  • 极简实现酷炫动效:Flutter隐式动画指南第三篇自定义Flutter隐式动画
  • ADRV9009 跳频时间测试
  • npm入门教程15:npm 安全性
  • Xamarin 存档报错 XABLD7000 Xamarin.Tools.Zip.ZipException
  • Java集合框架面试指南
  • 从网络到缓存:在Android中高效管理图片加载
  • 使用Git LFS管理大型文件
  • 适用于 c++ 的 wxWidgets框架源码编译SDK-windows篇
  • 【蔬菜识别】Python+深度学习+CNN卷积神经网络算法+TensorFlow+人工智能+模型训练
  • el-date-picker日期选择器动态设置日期
  • 基于python的语音识别与蓝牙通信的温控系统
  • 2024年大厂AI大模型面试题精选与答案解析
  • ffmpeg常用命令
  • RabbitMQ的主题模式