1. 程式人生 > >最短路——解決負權邊(Bellman演算法)

最短路——解決負權邊(Bellman演算法)

#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; }