为何RE
查看原帖
为何RE
1061050
jiangyunuo楼主2025/7/28 18:39
#include<bits/stdc++.h>
using namespace std;
struct edge{
	int node,val;
};
bool z[5005];
int n,m,X,Y,Z,a=1,b[5005],c,d,f;
long long ans;
vector<edge>e[5005];
bool pd(){
	for(int i=1;i<=n;i++){
		if(z[i]==0)return 1;
	}
	return 0;
}
void dfs(int x){
	z[x]=1;
	for(int i=0;i<e[x].size();i++){
		if(!z[e[x][i].node]){
			dfs(e[x][i].node);
		}
	}
}
bool cmp(edge x,edge y){
	return x.val>y.val;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>X>>Y>>Z;
		e[X].push_back({Y,Z});
		e[Y].push_back({X,Z});
	}
	dfs(1); 
	if(pd()){
		cout<<"orz"<<endl;
		return 0;
	}
	for(int i=1;i<=n;i++){
		sort(e[i].begin(),e[i].end(),cmp);
	}
	memset(z,0,sizeof(z));
	z[1]=1;
	b[1]=1;
	while(n!=a){
		c=99999;
		for(int i=1;i<=a;i++){
			for(int j=e[b[i]].size()-1;j>=0;j--){
				if(e[b[i]][j].val>=c)break;
				else{
					if(!z[e[b[i]][j].node]){
						c=e[b[i]][j].val;
						d=i;
						f=j;
						break; 
					}
				}
			}
		}
		b[++a]=e[d][f].node;
		swap(e[d][f],e[d][e[d].size()-1]);
		e[d].pop_back();
		ans+=c;
		z[d]=1;
		
	}
	cout<<ans<<endl;
	return 0;
}
2025/7/28 18:39
加载中...