zoukankan      html  css  js  c++  java
  • hdu 1232 最小生成树

    1. #include <stdio.h>
    2. #include <string>
    3. #define SIZE 1100
    4. #define INF 0x7fffffff
    5. int map[1100][1100], weight[1100], pre[1100], length, point;
    6. bool sign[1100];
    7. void prim(int weight[],int map[][SIZE], int pre[], bool sign[], int &length, int point_num, int source, int &point)
    8. {
    9. point =1; //source源起点,一定要是路径中有的
    10. for(int i=1; i<=point_num; i++) //这里的路径的标号都 > 1,记录所以点到源起点的权值,前驱,将该点置为已经查找
    11. {
    12. weight[i] = map[source][i];
    13. pre[i] = source; sign[i] = true;
    14. }
    15. sign[source] = false; length = 0;
    16. for(int i=1; i<point_num; i++) //枚举n-1个点,即n-1个通路
    17. {
    18. int min = INF, sign_node = i; //sign_node 记录找到的最小的下一个点
    19. for(int j=1; j<=point_num; j++) //查找最小权值的路径
    20. {
    21. if(sign[j] && weight[j] < min)
    22. {min = weight[j]; sign_node = j; }
    23. }
    24. {sign[sign_node] = false; length += min; }
    25. if(min != INF )
    26. point++; //可以在这里添加一个标记,使他值等于min,如果最后值等于最大值,则不能生成最小生成树
    27. for(int j=1; j<=point_num; j++) //重新设定源起点,将剩下的未找的点加入
    28. {
    29. if(weight[j] > map[sign_node][j] && sign[j] )
    30. {weight[j] = map[sign_node][j]; pre[j] = sign_node;}
    31. }
    32. }
    33. }
    34. int a;
    35. void input(int n, int map[][SIZE])
    36. {
    37. for(int i=1; i<=n ;i++)
    38. {
    39. int b;
    40. scanf("%d%d", &a, &b);
    41. map[a][b] = 0; map[b][a] = 0;
    42. }
    43. }
    44. int main()
    45. {
    46. int N,M;
    47. while(scanf("%d %d", &N, &M) && N )
    48. {
    49. //scanf("%d", &M);
    50. for(int i=0; i<=N; i++) //初始化
    51. {
    52. weight[i] = INF; pre[i] = 0;
    53. for(int j=0; j<=N; j++)
    54. map[i][j] = INF;
    55. }
    56. memset(sign, false, sizeof(sign) );
    57. length = point = 0;
    58. input( M, map);
    59. prim(weight, map, pre, sign, length, N, a, point); //查找,注意这个1 它是源起点,一定要是在路径上已知的点
    60. printf("%d ", N-point);
    61. }
    62. return 0;
    63. }





    附件列表

    • 相关阅读:
      requireJS搭建
      html启动本地.exe文件
      自定义input[type="checkbox"]的样式
      使用rem单位时css sprites的坑
      visibility API
      css动画
      去除ios端输入框的弹出
      *java类的生命周期
      处理高并发,防止库存超卖
      java注解的使用
    • 原文地址:https://www.cnblogs.com/sober-reflection/p/dba7cc43fbc8f7a4d31983fdb74e43d7.html
    Copyright © 2011-2022 走看看