首页 > 编程知识 正文

迪杰斯特拉算法表格,dijkstra算法过程图解

时间:2023-05-04 12:10:15 阅读:110136 作者:4160

# include iostream # include cstdio # includecstdlib # include cstring # includealgorithmusingnamespacestd; const int maxn=405; const int inf=4000005; intD1[maxn]、n、m、g[maxn]、D2[maxn]、d3[maxn][maxn]; //d1最短路径、d2最大边最小、d3最小边最大。 void init () scanf ) ' %d%d )、n、m ); for(intI=1; i=n; I//初始值for(intj=1; j=n; j () if(I==j ) g ) I ) ) j )=0; else g[i][j]=inf; }for(intI=1; i=m; I ) {int x,y,z; scanf(%d%d%d )、x、y和z ); g[x][y]=z; g[y][x]=z; }}void floyd () (memcpy ) D1,g,sizeof ) ) D1 ); memcpy(D2,g,Sizeof ) D2 ); memcpy(D3,g,Sizeof ) D3 ); for(intI=1; i=n; I ) for(intj=1; j=n; j ) if(D2[I][j]==INF ) d2[i][j]=-inf; for(intk=1; k=n; k ) for(intI=1; i=n; I ) for(intj=1; j=n; j () if ) D1[I][k]D1[k][j]D1[I] ) D1[j]=D1[I][k]D1[k][j]; intx=min(D2[I][k],d2[k][j] ); D2[I][j]=max(D2[I][j],x ); intt=max(D3[I][k],d3[k][j] ); D3[I][j]=min(D3[I][j],t ); }}int main () {init ); floyd (; 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。