flody求最短路 一般点不超过100个 o(n3)

来源:互联网 发布:手机遥控器软件哪个好 编辑:程序博客网 时间:2024/04/30 11:40
flody
for(k=0; k<n; k++)  //中间节点
 for(i=0; i<n; i++) //起点
  for(j=0; j<n; j++) //重点

   map[i][j]=min(map[i][j], map[i][k]+map[k][j]);


例如HDU2544

# include<stdio.h># include<string.h># include<algorithm>using namespace std;const int INF = 99999;const int maxn = 105;int N, M;int d[maxn];int map[maxn][maxn];int main(void){    int i, j, k, A , B, C;    while(scanf("%d%d", &N, &M)==2)    {        if(N==0 && M==0)        break;        for(i=1; i<=N; i++)        for(j=1; j<=N; j++)        map[i][j]=INF;        for(i=1; i<=M; i++)        {            scanf("%d%d%d", &A, &B, &C);            if(map[A][B]>C)            map[A][B]=map[B][A]=C;        }        for(k=1; k<=N; k++)  //中间节点          for(i=1; i<=N; i++) //起点            for(j=1; j<=N; j++) //重点              map[i][j]=min(map[i][j], map[i][k]+map[k][j]);        printf("%d\n", map[1][N]);    }    return 0;}


原创粉丝点击