1 条题解

  • 1
    @ 2021-10-23 16:36:00

    int n,m;

    int a[100][100]; int vis[100]; int dis[100]; void init(){ memset(a,0x3f,sizeof(a)); memset(vis,0,sizeof(vis)); memset(dis,0x3f,sizeof(dis)); } int prim(){ int id=1; for(int i=1;i<=n;i++){ vis[id]=1; for(int j=1;j<=n;j++){ if(!vis[j] and a[id][j]<dis[j]){ dis[j]=a[id][j]; } } int k=1; for(int j=1;j<=n;j++){ if(!vis[j] and dis[k]>dis[j])k=j; } id=k; } int sum=0; for(int i=2;i<=n;i++){ sum+=dis[i]; } return sum; } int main(){ while(cin>>n and n){ init(); cin>>m; while(m--){ int u,v,w; cin>>u>>v>>w; a[v][u]=a[u][v]=min(a[u][v],w); } cout<<prim()<<endl; } return 0; }

    • 1

    信息

    ID
    1333
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    19
    已通过
    0
    上传者