• POJ 1502(Floyd)


            这个题是单源最短路径,显然是dijkstra(0MS)效率高,Floyd(16MS)也可以,但是效率低点。纯当练习下Floyd(第一次用)。

    代码:

     1 #include<iostream>
    2 #include<cstdlib>
    3 #include<cstring>
    4 #define max 0x7fffffff
    5 using namespace std;
    6
    7 int p[101][101]={0,};
    8 int Floyd(int n);
    9
    10 int main()
    11 {
    12 int i,j,n;
    13 char ch[20];
    14 cin>>n;
    15 for(i = 1 ; i < n ; ++i)//只输入下三角(并且不包括那个对角线)
    16 for(j = 0 ; j < i ; ++j)
    17 {
    18 cin>>ch;
    19 if(ch[0] == 'x')//不可达
    20 p[i][j] = p[j][i] = max;
    21 else
    22 p[i][j] = p[j][i] = atoi(ch);//将字符串转换为int
    23 }
    24 for(i = 0 ; i < n ; ++i)
    25 p[i][i] = 0;//自己到自己为0
    26
    27 printf("%d\n",Floyd(n));
    28
    29 //system("pause");
    30 return 0;
    31 }
    32
    33 int Floyd(int n)
    34 {
    35 int i,j,k,m;
    36 for(i = 0 ; i < n ; ++i)
    37 for(j = 0 ; j < n ; ++j)
    38 for(k = 0 ; k < n ; ++k)
    39 if(p[j][i] < max && p[i][k] < max && p[j][i]+p[i][k] < p[j][k] )
    40 p[j][k] = p[j][i]+p[i][k];
    41
    42 m = 0 ;
    43 for(i = 1 ; i < n ;++i)
    44 if(p[0][i] < max && m < p[0][i])
    45 m = p[0][i];
    46
    47 return m;
    48 }
  • 相关阅读:
    hdu2138(求素数)
    hdu2104
    poj1664(放苹果)
    数塔问题给你有哪些启示?
    汉诺塔问题(1)
    算法的力量(转李开复)
    最长子序列问题之系列一
    forward和redirect的区别
    group by 和having
    java中的多态三要素是什么?
  • 原文地址:https://www.cnblogs.com/HpuAcmer/p/2301357.html
Copyright © 2020-2023  润新知