bfs,最后一个测试点出错,求助大佬
  • 板块P1364 医院设置
  • 楼主Rinkan
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/25 17:15
  • 上次更新2024/5/25 19:51:14
查看原帖
bfs,最后一个测试点出错,求助大佬
695872
Rinkan楼主2024/5/25 17:15
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>

using namespace std;
typedef pair<int, int>PII;
const int N = 110;
int e[N], ne[N], h[N], idx, INF = 0x3f3f3f3f;
bool st[N];
int n;
int value[N];
void add(int a, int b)
{
	e[idx] = b;
	ne[idx] = h[a];
	h[a] = idx++;
}
int bfs(int start)
{
	int result = 0;
	queue<PII>q;
	q.push({ start, 0 });
	st[start] = true;
	while (q.size())
	{
		int num = q.front().first;
		int dis = q.front().second;
		q.pop();
		result += dis * value[num];
		for (int i = h[num]; i != -1; i = ne[i])
		{
			int j = e[i];
			if (!st[j])
			{
				st[j] = true;
				q.push({ j, dis + 1 });
			}
		}
	}
	return result;
}
int main()
{
	memset(h, -1, sizeof(h));
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		int w, u, v;
		cin >> w >> u >> v;
		value[i] = w;
		if (u > 0) add(u, i), add(i, u);
		if (v > 0) add(v, i), add(i, v);
	}
	int mini = INF;
	for (int i = 1; i <= n; i++)
	{
		memset(st, false, sizeof(st));
		int res = bfs(i);
		mini = min(mini, res);
	}
	cout << mini << endl;
	return 0;
}
2024/5/25 17:15
加载中...