• 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. }





    附件列表

    • 相关阅读:
      ESAPI = Enterprise Security API
      WingIDE中调试GAE(google app engine)
      C# 发送Http请求 WebClient类
      [转]使用Google App Engine Helper for Django
      装上Window7
      最近遇到个关于接口的奇怪的问题
      JNDI概述(转载)
      Google App Engine 中通过自定义Django的filter解决时区问题
      C# string与byte[]互转
      Python天天美味(33) 五分钟理解元类(Metaclasses)[转]
    • 原文地址:https://www.cnblogs.com/sober-reflection/p/dba7cc43fbc8f7a4d31983fdb74e43d7.html
    Copyright © 2020-2023  润新知