zoukankan      html  css  js  c++  java
  • poj 1861(prim)

    http://poj.org/problem?id=1861

    题意:求最小生成树,并输出哪几个城市相连接,且输出一共有多少条边(一定是n-1条边),和最短边的长度

    思路:直接prim,只不过在prim加点东西就可以,可以说是模板题,题目的案例是错的

    答案应该是

    1

    3

    1 2

    1 3

    2 4

     1 #include <stdio.h>
     2 #include <string.h>
     3 #define inf 1000009
     4 bool mark[1001];
     5 int a[1001][1001],dis[1001],ans,n,m;
     6 int b[1001];
     7 int Min,Max;
     8 
     9 int prim()
    10 {
    11    Min = 0,ans = 0;
    12    for(int i=1;i<=n;i++)
    13     dis[i]=inf;dis[1]=0;
    14     for(int i=1;i<=n;i++){
    15         int tep=inf;int k=0;
    16         for(int j=1;j<=n;j++){
    17             if(mark[j]&&dis[j]<tep)
    18             {
    19                 tep=dis[j];
    20                 k=j;
    21             }
    22         }
    23         if(tep==inf) return 0;
    24         if(tep>Min)
    25             Min = tep;
    26         mark[k]=false;
    27         for(int j=1;j<=n;j++)
    28             if(mark[j]&&dis[j]>a[k][j])
    29             {
    30                 b[j] = k;    //用来记录哪两个城市相连接
    31                 dis[j]=a[k][j];
    32             }
    33        }
    34    return 0;
    35 }
    36 
    37 
    38 
    39 int main()
    40 {
    41     int x,y,z;
    42     while(~scanf("%d%d",&n,&m))
    43     {
    44         memset(a,inf,sizeof(a));
    45         memset(b,0,sizeof(b));
    46         memset(mark,true,sizeof(mark));
    47         while(m--)
    48         {
    49             scanf("%d%d%d",&x,&y,&z);
    50             a[x][y] = z;
    51             a[y][x] = z;
    52         }
    53         prim();
    54         printf("%d
    %d
    ",Min,n-1);
    55         for(int i = 1;i<=n;i++)
    56         {
    57             if(b[i])
    58             {
    59                 if(b[i]>i)
    60                     printf("%d %d
    ",i,b[i]);
    61                 else printf("%d %d
    ",b[i],i);
    62             }
    63         }
    64 
    65     }
    66     return 0;
    67 }
  • 相关阅读:
    webpack常见问题 收藏
    ES6 模块
    ES6 Class 类
    ES6 迭代器
    ES6 函数
    ES6 数组
    ES6 对象
    记一次pda(安卓)环境配置流程
    类型转换
    DOM事件
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/6700429.html
Copyright © 2011-2022 走看看