40分蒟蒻求助
查看原帖
40分蒟蒻求助
1048638
LOVE__LMJ楼主2024/4/11 19:59
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
int n;
int cnt;
int sum;
int ans=2147483647;
vector<int> v[105];
queue<int> q;
int a[105];
bool vis[105];
void bfs(int x){
  for(int i=1;i<=n;i++){
    vis[i]=0;
  }
  sum=0;
  cnt=0;
  vis[x]=1;
  q.push(x);
  while(!q.empty()){
    cnt++;
    int t=q.front();
    q.pop();
    for(int j=0;j<v[t].size();j++){
      int k=v[t][j];
      if(vis[k]) continue;
      vis[k]=1;
      sum+=cnt*a[k];
      q.push(k);
    }
  }
  if(sum<ans) ans=sum;
  return ;
}
int main(){
  cin>>n;
  for(int i=1;i<=n;i++){
    int r,x,y;
    cin>>r>>x>>y;
    a[i]=r;
      if(x!=0) v[i].push_back(x);
      if(x!=0) v[x].push_back(i);
      if(y!=0) v[i].push_back(y);
      if(y!=0) v[y].push_back(i);
  }
  for(int i=1;i<=n;i++){
    bfs(i);
  }
  cout<<ans;
  return 0;
}
2024/4/11 19:59
加载中...