说好的“orz”呢?(P3366)
查看原帖
说好的“orz”呢?(P3366)
318960
XQpig楼主2021/7/19 09:34
#include<bits/stdc++.h>
const int MAXN=5005;
const int inf=0x3f3f3f3f;
bool vis[MAXN];
int dis[MAXN],u,v,w,g[MAXN][MAXN],n,m,ans=0;
using namespace std;
int main()
{
	memset(g,0x3f,sizeof(g));
	memset(dis,0x3f,sizeof(g));
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d%d",&u,&v,&w);
		g[u][v]=min(g[u][v],w);
		g[v][u]=min(g[v][u],w);
	}
	vis[1]=true;
	for(int i=1;i<=n;i++)dis[i]=g[1][i];
	dis[0]=inf;
	for(int i=1;i<n;++i)
	{
		int k=0;
		for(int j=1;j<=n;++j)
		{
			if(vis[j]) continue;
			if(dis[j]<dis[k]) k=j;
		}
		//cout<<k<<" "<<dis[k]<<endl;
		//getchar();
		ans+=dis[k];
		vis[k]=true;
		for(int j=1;j<=n;++j)
		{
			if(g[k][j]<dis[j]) dis[j]=g[k][j];
		}
	}
	printf("%d",ans);
	return 0;
}
2021/7/19 09:34
加载中...