alfdsjlfljslj
  • 板块灌水区
  • 楼主135791a
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/7/22 14:26
  • 上次更新2024/7/22 14:27:41
查看原帖
alfdsjlfljslj
1023960
135791a楼主2024/7/22 14:26
#include<bits/stdc++.h>
using namespace std;
int n,ans=1e9+1;
int f[105],a[105];
bool vis[105];
vector<int> c[105];
int bfs(int x) {
	int sum=0;
	queue<int> q,q1;
	q.push(x),q1.push(0);
	vis[x]=1;
	while (!q.empty()) {
		int t=q.front(),s=q1.front();
		q.pop(),q1.pop();
		sum+=a[t]*s;
		if (vis[f[t]]==0) {
			vis[f[t]]=1;
			q.push(f[t]),q1.push(s+1);
		}
		for (int i=0;i<c[t].size();i++){
			if (vis[c[t][i]]==0) {
				vis[c[t][i]]=1;
				q.push(c[t][i]),q1.push(s+1);
			}
		}
	}
	return sum;
}
int main() {
	cin>>n;
	for (int i=1;i<=n;i++) {
		int u,x,y;
		cin>>u>>x>>y;
		f[x]=i;
		f[y]=i;
		a[i]=u;
		if (x!=0) c[i].push_back(x);
		if (y!=0) c[i].push_back(y);
	}
	for (int i=1;i<=n;i++) {
		int sum=bfs(i);
		ans=min(ans,sum);
		for (int j=1;j<=n;j++) vis[j]=0;
	}
	cout<<ans;
	return 0;
}
2024/7/22 14:26
加载中...