zoukankan      html  css  js  c++  java
  • Dijkstra模版

    const int MAXN = 205;
    const int INF = 999999;
    int n;
    int maps[MAXN][MAXN];
    bool visited[MAXN];
    int pre[MAXN];
    int dist[MAXN];
    
    void init()
    {
    	memset(visited, false, sizeof(visited));
    	for (int i = 1; i <= n; i++)
    	{
    		for (int j = 1; j <= n; j++)
    		{
    			if(i == j)
    			{
    				maps[i][j] = 0;
    			}
    			else
    			{
    				maps[i][j] = INF;
    			}
    		}
    		pre[i] = i;
    		dist[i] = INF;
    	}
    }
    
    void Dijkstra(int s, int e) //起点,终点
    {
    	int i, j;
    	int minValue, minNode;
    
    	dist[s] = 0;
    	visited[s] = true;
    	for (i = 1; i <= n; i++)
    	{
    		dist[i] = maps[s][i];
    		if(dist[i] == INF)
    		{
    			pre[i] = 0;
    		}
    		else
    		{
    			pre[i] = s;
    		}
    	}
    	for (i = 1; i <= n; i++)
    	{
    		minValue = INF;
    		minNode = 0;
    		for (j = 1; j <= n; j++)
    		{
    			if(!visited[j] && minValue > dist[j])
    			{
    				minNode = j;
    				minValue = dist[j];
    			}
    		}
    		if(minNode == 0)
    		{
    			break;
    		}
    		visited[minNode] = true;
    		for (j = 1; j <= n; j++)
    		{
    			if(!visited[j] && maps[minNode][j] != INF && dist[j] > dist[minNode] + maps[minNode][j])
    			{
    				dist[j] = dist[minNode] + maps[minNode][j];
    				pre[j] = minNode;
    			}
    		}
    		if(minNode == e)
    		{
    			break;
    		}
    	}
    }

  • 相关阅读:
    19_多态及引用类型的转化
    18_接口以及基本实现
    17_super关键字 超,基,父
    Static 关键字
    17_抽象类
    17_继承
    数 函数类 Math类
    ArrayList类 Arrays类 注释
    我的第一篇博客
    hdu 3478 Catch--二分图判断
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5835062.html
Copyright © 2011-2022 走看看