邻接矩阵和弗洛伊德

来源:互联网 发布:激战2母夏尔捏脸数据 编辑:程序博客网 时间:2024/06/01 12:26
#include <iostream>#include <cstring>#include <string>#include <cstdlib>#include <map>#include <vector>#include <cmath>#include <cstdio>#include <algorithm>#include <iomanip>#define INF 9999999using namespace std;int main(){int n,m;while(cin>>n>>m){int count1=0;int mini,u,v;int sum=0;int mapp[205][205];int book[205];int dis[205];for(int i=0;i<n;i++)//邻接矩阵 {for(int j=0;j<n;j++){if(i==j)mapp[i][j]=0;elsemapp[i][j]=INF;}}for(int i=0;i<m;i++){int a,b,c;cin>>a>>b>>c;if(mapp[a][b]>c)mapp[a][b]=mapp[b][a]=c;//可能会出现同样起点和终点,但权值不同 }int start,endi;cin>>start>>endi;for(int k=0;k<n;k++)//弗洛伊德算法 求最短路 {for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(mapp[i][j]>mapp[i][k]+mapp[k][j])mapp[i][j]=mapp[i][k]+mapp[k][j];}} } if(mapp[start][endi]==INF)cout << "-1\n";elsecout << mapp[start][endi] << endl;}return 0;}