Prim 10分 求调!!!
查看原帖
Prim 10分 求调!!!
1382982
jikky楼主2024/10/30 16:37
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e3+10;
const int inf=1e9+10;
int node[N];
int dis[N];
int ans=0;
struct E{
	int ne,v;
	int w;
}e[N<<4];
int tot=0;
int head[N];
void add(int u,int v,int w){
	e[++tot].ne=head[u];
	e[tot].v=v;
	e[tot].w=w;
	head[u]=tot;
}
signed main(){
	int n;
	cin>>n;
	int m;
	cin>>m;
	for(int i=1;i<=m;i++){
		int u,v,w;
		cin>>u>>v>>w;
		add(u,v,w);
		add(v,u,w);
	}
	for(int i=1;i<=n;i++){
		node[i]=0;
		dis[i]=inf+10;
	}
	dis[1]=0;
	int c;
	int minn;
	for(int i=1;i<=n;i++){
		c=1;
		minn=inf;
		for(int j=1;j<=n;j++){
			if(!node[j]&&dis[j]<minn){
				minn=dis[j];
				c=j;
			}
		}
		node[c]=1;
		ans=max(dis[c],ans);
		for(int j=head[c];j;j=e[j].ne){
			if(dis[e[j].v]>dis[c]+e[j].w){
				dis[e[j].v]=dis[c]+e[j].w;
			}
		}
	}
	cout<<ans;
	return 0;
}
2024/10/30 16:37
加载中...