首页 > Windows开发 > 详细

AcWing 1142. 繁忙的都市(Prim最小生成树)

时间:2021-07-20 23:11:35      阅读:22      评论:0      收藏:0      [点我收藏+]

AcWing 1142. 繁忙的都市(Prim最小生成树)

AcWing 1142. 繁忙的都市

#include<bits/stdc++.h>
using namespace std;	
int n,k,sum=0;
const int N = 1e2+10,M =2e2+10,INF = 0x3f3f3f3f;
int g[N][N];
int prim()
{
	int res=0;
	int dist[N];
	bool used[N];
	
	memset(dist,0x3f,sizeof(dist));
	memset(used,false,sizeof(used));
	
	for(int i=0;i<n;i++)
	{
		int t=-1;
		for(int j=1;j<=n;j++)
		{
			if( (!used[j]) && (t==-1||dist[t]>dist[j]) )
			    t=j;
		}
		
		if(i&&dist[t]!=INF)res+=dist[t];
		//当i=0时,只是对路径或者说是dist数组进行预热
		//可能有不连通的存在 
		
		for(int j=1;j<=n;j++)
		   dist[j] = min(dist[j],g[t][j]);
		   
		used[t] = true;//用完不要再用了 
	}
	return res;
}
int main()
{
    memset(g,0x3f,sizeof(g));
	cin>>n>>k;
	for(int i=0;i<k;i++)
	{
		int I,J,m;
		cin>>I>>J>>m;
		g[I][J]=g[J][I]=min(g[I][J],m);//处理重边和双向路径
	    sum+=m;
	}
	cout<<sum-prim();
	return 0;
}

AcWing 1142. 繁忙的都市(Prim最小生成树)

原文:https://www.cnblogs.com/BeautifulWater/p/15036890.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!