1 条题解

  • 0
    @ 2023-4-23 17:50:36

    题目全用英语欺负我这个痴线啊 废话少说,上代码:

    #include <stdio.h>
    int e[1001][1001],dis[1001],vis[1001],sum, N,M;
    void Prime()
    {
        int max,k;
        for(int i=1;i<=N;i++)
        {
            dis[i]=e[1][i];
            vis[i]=0;
        }
        dis[1]=0;
        vis[1]=1;
        for(int i=1;i<N;i++)
        {
            k=-1;
            max=0;
            for(int j=1;j<=N;j++)
            {
                if(vis[j]==0&&dis[j]>max)
                    max=dis[k=j];
            }
            if(k==-1)
            {
                printf("-1\n");
                return;
            }
            vis[k]=1;
            sum+=max;
            for(int j=1;j<=N;j++)
            {
                if(vis[j]==0&&dis[j]<e[k][j])
                    dis[j]=e[k][j];
            }
        }
        printf("%d\n",sum);
    }
     
    int main()
    {
        int a,b,c;
        scanf("%d%d",&N,&M);
        for(int i=1;i<=N;i++)
            for(int j=1;j<=N;j++)
            {
                e[i][j]=0;
            }
        for(int i=0;i<M;i++)
        {
            scanf("%d%d%d",&a,&b,&c);
            if(c>e[a][b])
                e[a][b]=e[b][a]=c;
        }
        Prime();
        return 0;
    }
    
    
    • 1

    信息

    ID
    1329
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    8
    已通过
    4
    上传者