⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 图论_最短路_dij_邻接矩阵.cpp

📁 一些ACM基本算法的测试源码
💻 CPP
字号:
#include<iostream>
using namespace std;

const int SIZE = 201;
const int INF = 1000000000; 

int n;
int dist[SIZE];
int graph[SIZE][SIZE];
bool visit[SIZE];
//顶点坐标从0开始 
void Dijkstra(int s)//从点s到其它各点的最短距离,保存在数组dist中 
{
    int i, j, minvalue, tmp;
    for(i = 0; i < n; i ++)
    {
        visit[i] = false;
        dist[i] = INF;        
    }     
    dist[s] = 0;
    for(i = 0; i < n; i ++)
    {
        minvalue = INF;
        for(j = 0; j < n; j ++)
            if(!visit[j] && minvalue > dist[j])
            {
                minvalue = dist[j];
                tmp = j;            
            }        
        visit[tmp] = true;
        for(j = 0; j < n; j ++)
            if(!visit[j] && dist[j] > dist[tmp] + graph[tmp][j])
                dist[j] = dist[tmp] + graph[tmp][j];
    }
}

int main()
{
    scanf("%d", &n);
    for(int i = 0; i < n; i ++)
        for(int j = 0; j < n; j ++)
            scanf("%d", &graph[i][j]);
    Dijkstra(0);    
    for(int i = 0; i < n; i ++)
        printf("%d\n", dist[i]);
    system("pause");
    return 0;
}

/*
3
0 2 4
2 0 1
4 1 0
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -