WA on #13,RE on #8,9,10
查看原帖
WA on #13,RE on #8,9,10
1048875
GLY0912楼主2024/7/14 12:10

rt

#include <iostream>
#include <queue>
using namespace std;
const int N=5001,M=2e5+1,MAX=0x3f3f3f;
int head[N],n,m,cnt=1,dis[N];
bool vis[N];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >pq;
struct node{
	int next,to,w;
}e[M];
void add(int u,int v,int w){
	e[cnt].w=w;
	e[cnt].to=v;
	e[cnt].next=head[u];
	head[u]=cnt++;
	return ;
}
void prim(){
	for(int i=1;i<=n;i++) dis[i]=MAX;
	dis[1]=0;
	pq.push(make_pair(0,1));
	int now;
	while(!pq.empty()){
		now=pq.top().second;
		pq.pop();
		if(vis[now]) continue;
		vis[now]=1;
		for(int i=head[now];i;i=e[i].next){
			if(!vis[e[i].to]&&dis[e[i].to]>e[i].w){
				dis[e[i].to]=e[i].w;
				pq.push(make_pair(dis[e[i].to],e[i].to));
			}
		}
	}return ;
}
int main(){
	cin>>n>>m;
	int x,y,z;
	while(m--){
		cin>>x>>y>>z;
		add(x,y,z);
		add(y,x,z);
	}prim();
	int ans=0;
	for(int i=1;i<=n;i++) ans+=dis[i];
	cout<<ans;
	return 0;
}
2024/7/14 12:10
加载中...