最短路径——Floyd
来源:互联网 发布:ios gif制作软件 编辑:程序博客网 时间:2024/05/23 15:47
头文件"AdjGraph.h"
#include<iostream>#include<stack>#define INFINITY 0x3f3f3f3fusing namespace std;class AdjGraph{public:int **edge;//边的权int **path;//path[v][u]的值表示从v到u的最短路径中,中间编号不大于vertexNum的u的前驱顶点编号int vertexNum,edgeNum;//顶点数目,边数目AdjGraph(int v){vertexNum=v;edgeNum=0;edge=new int* [vertexNum];for(int i=0;i<vertexNum;i++)edge[i]=new int [vertexNum];path=new int* [vertexNum];for(int i=0;i<vertexNum;i++)path[i]=new int [vertexNum];//初始化边和最短路径for(int i=0;i<vertexNum;i++)for(int j=0;j<vertexNum;j++){edge[i][j]=INFINITY;path[i][j]=-1;}}~AdjGraph(){for(int i=0;i<vertexNum;i++)delete [] edge[i];delete edge;for(int i=0;i<vertexNum;i++)delete [] path[i];delete path;}void setedge(int v,int u,int weight){edge[v][u]=weight;path[v][u]=v;edgeNum++;}void Floyd(){//注意循环的嵌套顺序,如果把检查所有节点k放在最内层,那么结果将是不正确的.//因为这样便过早的把i到j的最短路径确定下来了,而当后面存在更短的路径时,已经不再会更新了.for(int k=0;k<vertexNum;k++)for(int i=0;i<vertexNum;i++)for(int j=0;j<vertexNum;j++)if(edge[i][j]>edge[i][k]+edge[k][j]){edge[i][j]=edge[i][k]+edge[k][j];path[i][j]=k;}}void show(){//因为输出最短路径时是从后往前的顺序得到路径,所以用栈来保存并输出stack<int> st;int tmp;for(int i=0;i<vertexNum;i++)for(int j=0;j<vertexNum;j++)if(edge[i][j]!=INFINITY&&i!=j){cout<<"v"<<i<<"->"<<"v"<<j<<":"<<edge[i][j]<<'\t';tmp=j;st.push(j);while(path[i][tmp]!=i){tmp=path[i][tmp];st.push(tmp);}st.push(i);cout<<"v"<<st.top();st.pop();while(!st.empty()){cout<<"->"<<"v"<<st.top();st.pop();}cout<<endl;}}};
源文件"main.cpp"
#include<iostream>#include"AdjGraph.h"using namespace std;int main(){AdjGraph AG(3);AG.setedge(0,1,10);AG.setedge(0,2,5);AG.setedge(1,0,9);AG.setedge(1,2,6);AG.setedge(2,0,2);AG.setedge(2,1,13);AG.Floyd();AG.show();return 0;}
- 最短路径——Floyd
- 最短路径算法——Floyd
- 最短路径——Floyd算法
- 最短路径——Floyd
- Floyd算法——最短路径
- Floyd 最短路径
- Floyd最短路径
- 最短路径Floyd
- 最短路径---Floyd
- 图论——最短路径——floyd
- 算法——最短路径——Floyd算法
- 最短路径算法——Dijkstra and Floyd算法
- 最短路径算法——Dijkstra and Floyd算法
- 最短路径算法——Dijkstra and Floyd算法
- 最短路径——dj+floyd+spfa(hdu2544)
- 动态规划——Floyd最短路径算法
- 最短路径之Floyd—Warshall算法
- 最短路径算法—Dijkstra算法与Floyd算法
- E: 无法获得锁 /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) E: 无法锁定管理目录(/var/lib/dpkg/
- 3种霓虹灯效果
- Android-------Handler,Thread,Message使用范例
- 10个你也许不知道的Ubuntu技巧
- insertsort & selectsort
- 最短路径——Floyd
- hive运维命令
- [Cache]页着色小结
- geronimo-servlet_2.5_spec包
- cocos2dx移植小问题
- hdu-1003-Max Sum
- 黑马程序员-java面试_单例、同步
- 中国人民银行等五部委发布《关于防范比特币风险的通知》
- [转载] ubuntu下mini2440 NFS挂载