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

📄 dijstra模板.txt

📁 标准c++ acm算法实现,DFS求无向图生成树的算法.copy 至vc6.0 可编译
💻 TXT
字号:
Dijkstra单源最短路径的算法: 

模板如下: 

#include <stdio.h> 
#include <string.h> 

int nearvex[],lowcost[],table[][]; 
int path[];  //记录路径,记录直接后继 
double dis; 

void Dijkstra(int st,int end) 
{ 
        int i,j; 
        int top = -1; 
        nearvex[st] = -1; 
        dis = 0; 
        for(i=1;i<=n;i++) 
                if( i != st ) 
                { 
                        nearvex[i] = st; 
                        lowcost[i] = table[i][st]; 
                } 
        for(i=1;i<=n;i++) 
        { 
                int min = maxint; 
                int pmin; 
                for(j=1;j<=n;j++) 
                        if(nearvex[j] != -1 && lowcost[j] < min) 
                        { 
                                min = lowcost[j]; 
                                pmin = j; 
                        } 
                path[nearvex[pmin]] = pmin; 
                nearvex[pmin] = -1; 
                if(pmin == end) return ; 
                for(j=1;j<=n;j++) 
                        if(nearvex[j] != -1 && lowcost[pmin] + table[j][pmin] < lowcost[j]) 
                        { 
                                lowcost[j] = lowcost[pmin] + table[j][pmin]; 
                                nearvex[j] = pmin; 
                        } 
        } 
} 

//路径的输出 
void output(int st , int end) 
{ 
        int next = st; 
        do{ 
                printf("%d ",path[next]); 
                next = path[next]; 
        }while(next != end); 
} 

int main() 
{ 
        scanf("%d%d",&st,&end); 
        Dijkstra(st,end); 
} 

// Single -- Source Shortest Path Problem 

⌨️ 快捷键说明

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