求图中最长路径

编程入门 行业动态 更新时间:2024-10-11 17:27:56

求<a href=https://www.elefans.com/category/jswz/34/1770587.html style=图中最长路径"/>

求图中最长路径

求最长路径函数:

vector<int>Path;
vector<int>LongPath;
bool first=true;
float pathSum,longPathSum;
int paths=0;
vector<vector<int>> status(6,vector<int>(6,0));   //顶点状态void getRoad(vector<vector<float>> prox,int start,int end)
{Path.push_back(start);		status[start][end]=1;if(prox[start][end]>0){pathSum+=prox[start][end];Path.push_back(end);vector<int>::iterator iter;if(first){for(iter=Path.begin();iter!=Path.end();++iter){LongPath.push_back(*iter);}first=false;longPathSum=pathSum;}else{if(pathSum>longPathSum){LongPath.clear();for(iter=Path.begin();iter!=Path.end();++iter){LongPath.push_back(*iter);}longPathSum=pathSum;}}Path.pop_back();pathSum-=prox[start][end];}for(int i=0;i<prox.size();i++){if((status[start][i]==0)&&(status[i][end]==0)&&(prox[start][i]>0)){pathSum+=prox[start][i];getRoad(prox,i,end);pathSum-=prox[start][i];}}Path.pop_back();status[start][end]=0;
}

调用方法:

vector<vector<float>> mz(6,vector<float>(6,0.0)); //图中的权值
//测试最长路径mz[0][1]=0.3;mz[1][2]=1.0;mz[2][3]=0.3;mz[3][0]=0.3;mz[1][4]=0.6;mz[4][2]=0.7;mz[2][5]=0.4;mz[5][3]=0.3;getRoad(mz,4,1);    


更多推荐

求图中最长路径

本文发布于:2024-03-04 00:58:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1707836.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:图中   路径   最长

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!