zoukankan      html  css  js  c++  java
  • 最短路径C++算法模板

    最短路径C++算法模板

    看了算法笔记,记录Dijkstra算法模板,Dijkstra算法是单源最短路径算法

    
    #define maxv 1001
    #define INF 0x3fffffff
    int G[maxv][maxv];//邻接矩阵存储图
    int d[maxv], n; // n 是顶点数 
    bool vis[maxv] = {false};
    
    void dijkstra(int s){//对点s进行最短路径算法 
    	fill(d, d + maxv, INF);//初始化所有顶点到源s的距离为无穷大
    	d[s] = 0;//s到自己的距离为0
    	for(int i = 0;i < n;i++){//对每个顶点进行遍历
    		int u = -1, Min = INF;
    		
    		for(int j = 0;j < n;j++){//找到距离s最近的未访问过的顶点u
    			if(!vis[j] && d[j] < Min){
    				Min = d[j];
    				u = j;
    			}
    		}
    		
    		if(u == -1)	return;//图是不连通的 
    		vis[u] = true;//访问顶点u
    		for(int v = 0;v < n;v++) {
    			if(!vis[v] && G[u][v] != INF && d[u] + G[u][v] < d[v]){//如果s通过中间顶点u到v的距离比原来s到v的距离更短则更新该距离
    				d[v] = d[u] + G[u][v];
    			}
    		}
    	}
    	
    }
    
  • 相关阅读:
    串口调试助手
    自己动手编写俄罗斯方块
    ASP.NET Core log4net
    ASP.NET Core读取配置文件
    ASP.NETCore3 MVC
    ASP.NETCore2C#7.0新语法
    ASP.NETCore1C#6.0新语法
    C#加密解密
    前端通用的滚动条样式
    C# 106 短信发送
  • 原文地址:https://www.cnblogs.com/Codroc/p/12458770.html
Copyright © 2011-2022 走看看