全wa,悬赏关注
  • 板块P1364 医院设置
  • 楼主gyttnnd
  • 当前回复12
  • 已保存回复12
  • 发布时间2022/12/12 20:24
  • 上次更新2023/10/24 07:51:40
查看原帖
全wa,悬赏关注
835944
gyttnnd楼主2022/12/12 20:24
#include<iostream>
#include<queue>
using namespace std;

int minn=100000000;
int n;
struct node
{
	int left,right,people,way;
	//左节点,右节点,人数,走多远 
}a[1009];

void check(int i)
{
	int sum=0;
	
	queue<node> q;
	node u;
	u.left=a[i].left;
	u.right=a[i].right;
	u.people=a[i].people;
	u.way=0;
	q.push(u);
	
	while(!q.empty())
	{
		node u=q.front();
		q.pop();
		int xx=u.left;
		int yy=u.right;
		int zz=u.people;
		int pp=u.way;
		sum+=zz*pp;
		
		if(xx!=0)
		{
			//左节点没有链接 
			node p;
			p.left=a[xx].left;
			p.right=a[xx].right;
			p.way=pp+1;
			p.people=a[xx].people;
			q.push(p);
		}
		if(yy!=0)
		{
			//右节点没有链接 
			node p;
			p.left=a[yy].left;
			p.right=a[yy].right;
			p.way=pp+1;
			p.people=a[yy].people;
			q.push(p);
		}
	}
	
	minn=min(minn,sum);
	//去最小值 
}

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	   cin>>a[i].people>>a[i].left>>a[i].right;
	for(int i=1;i<=n;i++)
		check(i);
		//一个一个判断(恼 
	cout<<minn;
	return 0;
}
2022/12/12 20:24
加载中...