c_michong 2021-12-13 20:06 采纳率: 50%
浏览 198
已结题

R7-2 最小生成树构造 (25 分)

img


giegie们!!

输入样例:
4 6
1 2 1
1 3 4
1 4 1
2 3 3
2 4 2
3 4 5

  • 写回答

1条回答 默认 最新

  • ???嘿嘿 2021-12-17 19:15
    关注

    #include<bits/stdc++.h>
    using namespace std;
    const int inf=0x3f3f3f3f;
    int n,m;
    int mp[50][50],book[50],dis[50],parent[50];
    void prim()
    {
    for(int i=1;i<=n;i++)
    {
    dis[i]=mp[1][i];
    if(mp[1][i]!=inf)
    parent[i]=1;
    }
    int ans;
    book[1]=1;
    for(int i=1;i<n;i++)
    {
    int minn=inf,u;
    for(int j=1;j<=n;j++)
    {
    if(!book[j]&&minn>dis[j])
    {
    u=j;
    minn=dis[j];
    }
    }
    book[u]=1;

        int x=parent[u];
        int y=u;
        int z=mp[parent[u]][u];
        if(x>y) 
            swap(x,y);
        printf("%d,%d,%d\n",x,y,z);
        
        for(int v=1;v<=n;v++)
        {
            if(!book[v]&&dis[v]>mp[u][v])
            {
                dis[v]=mp[u][v];
                parent[v]=u;
            }    
        }
    }
    

    }

    int main()
    {
    memset(book,0,sizeof(book));
    cin>>n>>m;
    memset(mp,0x3f,sizeof(mp));
    for(int i=1;i<=n;i++)
    mp[i][i]=0;
    for(int i=1;i<=m;i++)
    {
    int a,b,c;
    cin>>a>>b>>c;
    mp[a][b]=mp[b][a]=min(mp[a][b],c);
    }
    prim();
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月25日
  • 已采纳回答 12月17日
  • 创建了问题 12月13日