求调,玄关
  • 板块灌水区
  • 楼主AssassinCreed
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/20 11:11
  • 上次更新2024/3/20 16:44:31
查看原帖
求调,玄关
840097
AssassinCreed楼主2024/3/20 11:11
#include<bits/stdc++.h>
using namespace std;
int n,m,ans,cnt;
struct node
{
	int val,to;
};
vector <node> rank[5001];
bool sf[5001];
bool prim()
{
	int minval=99999999,minto=99999999;
	for(int i=0;i<n;i++)
		if(sf[i])
			for(int j=0;j<rank[i].size();j++)
			{
				if(minval>rank[i][j].val&&(!sf[rank[i][j].to]))
				{
					minval=rank[i][j].val;
					minto=rank[i][j].to;
				}
			}
	if(minval==99999999)
		return 1;
	else
	{
		sf[minto]=1;
		ans+=minval;
		cnt++;
	}
}
int main()
{
	cin>>n>>m;
	int u,v,val;
	for(int i=0;i<m;i++)
	{
		cin>>val>>u>>v;
		rank[u][rank[u].size()].to=v;
		rank[u][rank[u].size()].val=val;
		rank[v][rank[v].size()].to=u;
		rank[v][rank[v].size()].val=val;
	}
	sf[1]=1;
	for(int i=0;i<n-1;i++)
	{
		if(prim())
		{
			cout<<"orz";
			return 0;
		}
	}
	if(cnt==n-1)
		cout<<ans;
	else
		cout<<"orz";
	return 0; 
} 

P3366

2024/3/20 11:11
加载中...