第一天学最小生成树,dl老师一定要让我们用prim,查不出错了qwq
#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
#define INF 0x3f3f3f3f3f3f3f3fLL
#define P pair<long long,int>
using namespace std;
priority_queue<P,vector<P>,greater<P> > q;
bool vis[2005];
long long v[2005];
vector<P> g[2005];
int main() {
int n,m;
scanf("%d%d",&n,&m);
for(int i=1; i<=m; i++) {
int a,b,l;
scanf("%d%d%d",&a,&b,&l);
g[a].push_back(P(b,l));
g[b].push_back(P(a,l));
}
memset(v,INF,sizeof(v));
v[1]=0;
q.push(P(0,1));
long long ans=0;
int sum=0;
while(!q.empty()&&sum<n) {
int t=q.top().second;
q.pop();
if(!vis[t]) {
vis[t]=1;
sum++;
ans=max(ans,v[t]);
for(int i=0; i<g[t].size(); i++)
if(v[g[t][i].first]>v[t]+g[t][i].second) {
v[g[t][i].first]=v[t]+g[t][i].second;
q.push(P(v[g[t][i].first],g[t][i].first));
}
}
}
printf("%lld",ans);
return 0;
}