prim全WA求助
查看原帖
prim全WA求助
124564
Austra楼主2020/9/11 21:34
#include<iostream>
#include<cmath>
using namespace std;
int n,m,f[5001][5001],dis[5001],ans,x,y,z,v[5001],top;
bool s[5001];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)dis[i]=100000001;
	for(int i=1;i<=m;i++){
        cin>>x>>y>>z;
        if(!f[x][y])f[x][y]=z;
        else f[x][y]=min(f[x][y],z);
        f[y][x]=f[x][y];
    }
    for(int i=1;i<=n;i++)
    	for(int j=1;j<=n;j++)
    		if(!f[i][j])f[i][j]=100000001;
    s[1]=1,v[++top]=1;
    for(int i=1;i<n;i++){
    	for(int j=1;j<=n;j++)
    		dis[j]=min(dis[j],f[v[i]][j]);
    	int maxn=100000001,num;
    	for(int j=1;j<=n;j++)
    		if(dis[j]<maxn&&!s[j])maxn=dis[j],num=j;
    	s[num]=1,v[++top]=num;
	}
	for(int i=2;i<=n;i++)ans+=dis[i];
	cout<<ans;
	return 0;
}
2020/9/11 21:34
加载中...