警示后人如果你一个没对
  • 板块P1113 杂务
  • 楼主da_ke
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/8/17 23:51
  • 上次更新2023/11/3 03:00:27
查看原帖
警示后人如果你一个没对
766675
da_ke楼主2023/8/17 23:51
#include <bits/stdc++.h>
#define rep(i,l,r) for(int i=l;i<=r;++i)

const int N=1e4+24;

using namespace std;

vector<int> linker[N];
int mem[N];
int a[N];
int n;

int dfs(int u){
    int& ans=mem[u];
    if(ans!=0)
        return ans;
    for(auto& v:linker[u])
        ans=max(ans,dfs(v));
    ans+=a[u];
    return ans;
}

signed main(){
    memset(mem,0,sizeof(mem));
    cin>>n;
    rep(i,1,n){
        int id;
        cin>>id>>a[i];
        int pre;
        while(1){
            cin>>pre;
            if(pre==0)
                break;
            linker[pre].push_back(id);
        }
    }
    int ans=-1;
    rep(i,1,n)
        ans=max(ans,dfs(i));
    cout<<ans;
}

初始化值建议为零,不然ans应该处理为零

2023/8/17 23:51
加载中...