首页 > 其他分享 >最短路图论

最短路图论

时间:2024-06-01 22:12:54浏览次数:21  
标签:pii 图论 pq int 短路 edges push dis

dijkstra

Code:

#include<bits/stdc++.h>
    
using namespace std;
typedef pair <int, int> pii;
const int N = 1e5 + 5, inf = INT_MAX;
int n, m, dis[N], s;
// struct node {
    // int from, to, w, val;
// };

bool vis[N]; vector <pii> edges[N];

void addedges (int from, int to, int w) {
    edges[from].push_back({to, w});
    // edges[to].push_back({from, w});
}

void dijkstra(int s) {
    for (int i = 1; i <= n; i++) dis[i] = inf;
    priority_queue <pii, vector <pii>, greater <pii>> pq;
    dis[s] = 0; pq.push({0, s});
    while (!pq.empty()) {
        pii now = pq.top(); pq.pop();
        int from = now.second; 
        if (vis[from]) continue;
        vis[from] = true;
        for (pii tmp : edges[from]) {
            int to = tmp.first, w = tmp.second;
            if (dis[to] > dis[from] + w) {
                dis[to] = dis[from] + w;
                pq.push({dis[to], to});
            }
        }
    }
}   

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    //cin >> n >> m; 
    cin >> n >> m >> s;
    for (int i = 1; i <= m; i++) {
        int from, to, w; cin >> from >> to >> w;
        addedges(from, to, w);
    }
    dijkstra(s);
    for (int i = 1; i <= n; i++) {
        cout << dis[i] << ' ';
    }
    return 0;
}

  

标签:pii,图论,pq,int,短路,edges,push,dis
From: https://www.cnblogs.com/youhualiuh/p/18226463

相关文章

  • 《庆余年算法番外篇》:范闲通过最短路径算法在阻止黑骑截杀林相
    剧情背景在《庆余年2》22集中,林相跟大宝交代完为人处世的人生哲理之后,就要跟大宝告别了在《庆余年2》23集中,林相在告老还乡的路上与婉儿和大宝告别后范闲也在与婉儿的对话中知道黑骑调动是绝密,并把最近一次告老还乡梅执礼被马匪截杀与黑骑调动日期关联在一起,范闲知道......
  • 知识点整理 - 连通性相关 | 《综述图论中连通性及相关问题的一些处理方法》学习笔记
    是ix35老师论文的学习笔记,同时也用作连通性相关知识梳理。可能不会包含很多定义,只会挑重要的写。会包含一些例题。定义与记号\(u\rightsquigarrowv\)代表\(u\)到\(v\)的一条路径。有时也会用这个记号表示连通性。无向图点/边连通度:若\(u,v\)任意点割集大小不小......
  • 图论-最近公共祖先
    例题:祖孙询问 给定一棵包含 n......
  • Floyd算法(计算最短路径)
    [JLOI2009]二叉树问题题目描述如下图所示的一棵二叉树的深度、宽度及结点间距离分别为:深度:$4$宽度:$4$结点8和6之间的距离:$8$结点7和6之间的距离:$3$其中宽度表示二叉树上同一层最多的结点个数,节点$u,v$之间的距离表示从$u$到$v$的最短有向路径上向根节点......
  • 队列迷宫求解最短路径
    目录课程设计目的课程设计内容和要求问题描述   2.设计要求课程设计总体方案及分析问题分析   2.概要设计3.详细设计数据结构设计函数功能设计调试分析测试结果课程设计总结附录(源代码)课程设计目的本课程目的在于充分理解队列的应用,了解队列“......
  • 多段图最短路径(动态规划法)
    目录前言一、多段图的分析二、算法思路三、代码如下:总结前言问题描述:设图G=(V,E)是一个带权有向图,如果把顶点集合V划分成k个互不相交的子集Vi(2≤k≤n,1≤i≤k),使得对于E中的任何一条边(u,v),必有u∈Vi,v∈Vi+m(1≤i≤k,1<i+m≤k),则称图G为多段图,称s∈V1为源点,t∈......
  • 动态规划--图论中使实用场景概述
    目录一 动态规划概述二 动态规划在图论中应用场景三c实例1.**最短路径问题(Dijkstra算法)**:2.**最小生成树问题(Kruskal算法)**:一 动态规划概述动态规划(DynamicProgramming,简称DP)是一种用于解决具有重叠子问题和最优子结构特性的问题的优化方法。动态规划通过将原......
  • 迪杰斯特拉算法实现最短路径
    1.用邻接表实现1.先写出一个邻接表 #include<iostream>#include<vector>#include<queue>usingnamespacestd;//定义边结构体structEdge{ intto;//边指向的顶点 intweight;//边的权重,如果图是无权重的,可以省略这个成员};//邻接表类classAdjacenc......
  • 【图论】割点(割顶)
    前置定义有无向图\(G=(V,E).\)无向图的DFS树:从某一点\(root\)开始DFS,访问邻点\(.\)当搜索到点\(u\)时,我们遍历每一条以\(u\)为起点的边\((u,v_i)\),且定义有向边\(u\longrightarrowv_i.\)于是DFS的过程全部完成之后,所有被定义的有向边就会组成一颗以\(r......
  • 【电源专题】什么是层间短路(Rare Short),如何检测?
    层间短路发生的原因        一般线圈类制品是以漆包线缠绕导磁材料制造而成,漆包线是指外层披覆一层薄薄绝缘漆的铜线。我们常见的线圈类制品有:电源变压器、高压变压器、SwitchingPower变压器、通讯变压器、脉冲变压器、环型变压器、电力传输变压器、音频传......