35pts玄关求调
查看原帖
35pts玄关求调
1079531
lcycl楼主2024/7/22 10:43
#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
using namespace std;
int nimm[5001];
int a[5001][5001];
bool b[5001];
int main(){
    int n,m;
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int x,y,z;
		cin>>x>>y>>z;
		if(a[x][y]==0){
			a[x][y]=z;
		    a[y][x]=z;
		}
		else{
			a[x][y]=min(z,a[x][y]);
		    a[y][x]=min(z,a[y][x]);
		}
	}
	memset(nimm,0x7f,sizeof(nimm));
	nimm[1]=0;
	memset(b,1,sizeof(b));
	for(int i=1;i<=n;i++){
		long long k=0;
		for(int j=1;j<=n;j++){
			if(b[j]==1&&(nimm[j]<nimm[k])&&a[i][j]!=0){
				k=j;
			}
		}
		
		b[k]=0;
		for(int j=1;j<=n;j++){
			if(b[j]==1&&(a[k][j]<nimm[j])&&a[k][j]!=0){
				nimm[j]=a[k][j];
			}
		}
	}
	int YHP=0;
	int num=0;
	for(int i=1;i<=n;i++){
		if(nimm[i]==0) num++;
		YHP+=nimm[i];
	}
	if(num==1) cout<<YHP;
	else cout<<"orz";
	return 0;
}

(名字被人改了QWQ )

2024/7/22 10:43
加载中...