Prim#7WA求助
查看原帖
Prim#7WA求助
569235
w9095楼主2022/11/1 08:50

这题是不是不能用Prim做啊,Prim剩下来的应该都是单独的点

#include <bits/stdc++.h>
#define INF 99999999
using namespace std;
int e[5001][5001],n,m,k,ans=0;
int dis[5001],book[5001];
int main()
{
	scanf("%d%d%d",&n,&m,&k);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(i==j)e[i][j]=0;
            else e[i][j]=INF;
    for(int i=0;i<m;i++)
        {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        if(x!=y)
            {
            e[x][y]=min(z,e[x][y]);
            e[y][x]=min(z,e[y][x]);
            }
        }
        for(int j=1;j<=n;j++)
            dis[j]=e[1][j];
        book[1]=1;dis[0]=INF;
        for(int p=1;p<=n-k;p++)
            {
            int q=0;
            for(int j=1;j<=n;j++)
                if(dis[j]<dis[q]&&!book[j])
                   q=j;
            book[q]=1;
            if(dis[q]!=INF)ans+=dis[q];
            for(int j=1;j<=n;j++)
                if((e[q][j]<dis[j])&&!book[j])
                    dis[j]=e[q][j];
            }
    if(ans==INF)printf("No Answer");
    else printf("%d",ans);
    return 0;
}

#7的数据大到连云贴剪板都放不下

2022/11/1 08:50
加载中...