求助1111
查看原帖
求助1111
1059776
HSyuio77楼主2023/8/17 01:12
#include<iostream>
#include<algorithm>
#include<cstring>
#define max 500
int a[max][max];
int vis[max],dist[max];
long long sum=0;
int max1=0;
int n,m;
using namespace std;
int prim(int pos)
{
	dist[pos]=0;
	for(int i=0;i<n;i++)
	{
		int cur=-1;
		for(int j=1;j<=n;j++)
		{
			if(!vis[j]&&(cur==-1||dist[j]<dist[cur]))
			{
				cur=j;
			}
		}
		if(dist[cur]>=0x3f3f3f3f)
		{
			return -1;
		}
	if(dist[cur]>=max1)
	max1=dist[cur];
	vis[cur]=1;
	for(int k=1;k<=n;k++)
	{
		if(!vis[k])
		{
			dist[k]=min(dist[k],a[cur][k]);
		}
	}
  }
	return max1;
}
int main()
{
	memset(a,0x3f,sizeof(a));
	memset(vis,0,sizeof(vis));
	memset(dist,0x3f,sizeof(dist));
	cin>>n>>m;
	int x,y,w;
	for(int i=1;i<=m;i++)
	{
		cin>>x>>y>>w;
		a[x][y]=min(a[x][y],w);
		a[y][x]=a[x][y];	
	}
	int v=prim(x);
    if(v==-1)
        cout<<"-1";
    else
        cout<<v;
	return 0;
}

大佬们真不知道错那了

2023/8/17 01:12
加载中...