1 条题解
-
1
世界上最好的题解🫠
#include<bits/stdc++.h> #define L 10005 using namespace std; int n;//节点数 int w[L] ;//点权 vector<int> g[L]; void input(){ cin>>n; int x,l,t; for(int i=1;i<=n;++i){ cin>>x>>l; w[x]=l; while(cin>>t,t!=0){ g[x].push_back(t);//实际上为反向邻接表 } } } int res[L]; int dfs(int k){ if(res[k])return res[k]; int ans=res[k]=w[k]; for(int i=0;i<g[k].size();++i){ int &t=g[k][i]; ans=max(ans,res[k]+dfs(t)); } return res[k]=ans; } void viewres(){ for(int i=1;i<=n;++i)cout<<res[i]<<" "; } int main(){ input(); int ans=0; for(int i=n;i>=1;--i){ if(!res[i])dfs(i); ans=max(ans,res[i]); } cout<<ans; return 0; }
看完别忘了点赞哟👍
- 1
信息
- ID
- 114
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 8
- 已通过
- 6
- 上传者