prim 无优化30分,AC后3个点
查看原帖
prim 无优化30分,AC后3个点
57373
_Error楼主2021/9/30 23:07

RT

#include<iostream> 
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<fstream>
using namespace std;
const int MAXN=5010,oo=0x3f3f3f3f;
int n,m,x,y,z,val[MAXN][MAXN];
void input(){
	scanf("%d%d",&n,&m);
	for (int i=0;i<=n;i++)
	    for (int j=0;j<=n;j++)
	        val[i][j]=oo;
	for (int i=1;i<=m;i++){
		scanf("%d%d%d",&x,&y,&z);
		val[x][y]=z;
		val[y][x]=z;
	}
}
int prim(){
	int sum=0,flag[MAXN];
	bool vis[MAXN];
	memset(vis,0,sizeof(vis));
	for (int i=1;i<=n;i++) flag[i]=oo;
	flag[1]=0;
	for (int i=1;i<=n;i++){
		int mi=oo,pos=0;
		for (int j=1;j<=n;j++)
		    if (mi>flag[j]&&!vis[j]) {
		    	mi=flag[j];
		    	pos=j;
			}
		vis[pos]=true;
		sum+=flag[pos];
		for (int j=1;j<=n;j++)
		    if (flag[j]>val[j][pos]) flag[j]=val[j][pos];
	}
	for (int i=1;i<=n;i++)
	    if (!vis[i]) return -1;
	return sum;
}
int main(){
	input();
	int last=prim();
	if (last==-1) printf("orz"); else printf("%d",last);
	return 0;
}

大佬们,求救

2021/9/30 23:07
加载中...