[ACM]TL-Prim

#include<iostream>
#include<cstdio>

using namespace std;

int main(){
	int inf = 99999999;
	int n,m,t1,t2,t3,min;
	int e[7][7],dis[7],book[7]={0};
	int count=0,sum=0;
	cin>>n>>m;
	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;
		}
	}
	int j;
	for(int i=1;i<=m;i++)
	{
		cin>>t1>>t2>>t3;
		e[t1][t2]=t3;
		e[t2][t1]=t3;
	}
	for(int i=1;i<=n;i++)
	{
		dis[i]=e[1][i];
	}
	
	
	//Prim
	book[1]=1;
	count++;
	while(count<n)
	{
		min=inf;
		for(int i=1;i<=n;i++)
		{
			if(book[i]==0 && dis[i] < min)
			{
				min=dis[i];
				j=i;
			}
		}
		book[j]=1;
		count++;
		sum+=dis[j];
		
		for(int k=1;k<=n;k++)
		{
			if(book[k]==0 && dis[k]>e[j][k])
				dis[k]=e[j][k];
		}
	}
	
	cout<<sum;
	return 0;
}
上一篇:Acwing:最小生成树(Prim + Kruskal)


下一篇:2020数据结构小学期(四)——Prim算法