最短路——解決負權邊(Bellman演算法)
阿新 • • 發佈:2019-02-12
#include<iostream>
#include<cstdio>
#include<ctime>
#define dif 9999
using namespace std;
struct haha{
int u;
int v;
int w;
}e[100];
int dis[100];
int main(){
clockid_t t1,t2;
double dt;
t1=clock();
int n,m;
cin >> n >> m;
int i,j;
int check;
for(i=1;i<=m;i++){
cin >> e[i].u >> e[i].v >> e[i].w;
}
for(i=1;i<=n;i++)
dis[i]=dif;
dis[1]=0;
for(i=1;i<=n-1;i++){
check=0;
for(j=1;j<=m;j++){
if(dis[e[j].v]>dis[e[j].u]+e[j].w){
dis[e[j].v]=dis[e[j].u]+e[j].w;
check=1 ;
}
}
if(check==0)
break;
}
dt=t2-t1;
for(j=1;j<=m;j++)
if(dis[e[j].v]>dis[e[j].u]+e[j].w){
cout << "有負權迴路" << endl;
break;
}
for(i=1;i<=n;i++)
printf("%5d",dis[i]);
t2=clock();
cout << endl << t1 << ' ' << t2;
return 0;
}