prim+邻接表16分求助!
查看原帖
prim+邻接表16分求助!
541916
RiceFruit楼主2022/6/1 09:45
#include <bits/stdc++.h>
using namespace std;
const int N=6000,inf=0x3f3f3f3f;
int n,m,tot;
struct sa{
	int v;
	int w;
};
vector<sa>ve[N];
int dis[N];
bool vis[N];
int prim(int s){
	for(int i=1;i<=n;i++)
	dis[i]=inf,vis[i]=0;
	dis[s]=0;
	for(int i=0;i<n;i++){
		int u=-1,minx=inf;
		for(int j=1;j<=n;j++){
			if(!vis[j]&&dis[j]<minx)minx=dis[j],u=j;
		}
		if(u==-1){
			return -1;
		}
		vis[u]=1;
		tot+=minx;
		for(int j=0;j<ve[u].size();j++){
			int v=ve[u][j].v,w=ve[u][j].w;
			if(!vis[v]&&w<dis[v])dis[v]=w;
		}
	}
	return tot;
}
int main(){
	cin>>n>>m;
	for(int i=0;i<m;i++){
		int x,y,z;cin>>x>>y>>z;
		ve[x].push_back({y,z});
	}
	int t=prim(1);
	if(t==-1)cout<<"orz";
	else cout<<t;
	return 0;
}
2022/6/1 09:45
加载中...