为啥没有不联通的?
查看原帖
为啥没有不联通的?
310344
飞水银鼠_William楼主2021/6/19 14:07
#include <bits/stdc++.h>
using namespace std;
long long mst=0;
struct Node{
	int v;
	int w;
};
const int INF=0x1F;
int dist[100005];
bool vis[100005];
int n,m;
vector<Node> arr[100005];
int main(){
	scanf("%d%d",&n,&m);
	int x;
	for(int i=1;i<=m;i++){
		scanf("%d",&x);
		Node node;
		scanf("%d%d",&node.v,&node.w);
		arr[x].push_back(node);
		swap(x,node.v);
		arr[x].push_back(node);
	}
	memset(dist,INF,sizeof(dist));
	dist[1]=0;
	int min_u,v;
	for(int i=1;i<=n;i++){
		min_u=0;
		for(int u=1;u<=n;u++){
			if(!vis[u] && (!min_u || dist[min_u]>dist[u])){
				min_u=u;
			}
		}
		vis[min_u]=true;
		mst+=dist[min_u];
		for(int j=0;j<arr[min_u].size();j++){
			v=arr[min_u][j].v;
			if(!vis[v]){
				dist[v]=min(dist[v],arr[min_u][j].w);
			}
		}
	}
	printf("%lld",mst);
	return 0;
}

这没考虑联通,也能AC?!

2021/6/19 14:07
加载中...