Codeforces Round 888 (Div. 3) 补题

本题的题面保证了本题是个无环图,允许dfs函数会有出口,存图不能用链式前向图,因为非常容易构造数据使得为稠密图,所以用二维数组或vector数组或二维vector(注意区别,这三者不是一个东西)来存。

debug历程:(本题难度稍微上升可以感觉到封装函数的重要性,全局变量开太多会导致每轮都需要还原一堆变量)

  • 1.最重要的是递归函数一开写的不对,多考虑了一层,没有思考清楚dfs函数返回值的意义
  • 2.没分析数据范围,存图方式不对
  • 3.对于vector数组和二维vector混为一谈,导致clear的时候出错
  • 4.学会了使用cerr错误流来调试
// Problem: E. Nastya and Potions // Contest: Codeforces - Codeforces Round 888 (Div. 3) // URL: https://codeforces.com/contest/1851/problem/E // Memory Limit: 256 MB // Time Limit: 3000 ms // // Powered by CP Editor (https://cpeditor.org) #include <bits/stdc++.h> using namespace std; # define int long long typedef long long ll; typedef unsigned long long ull; typedef pair<int,int>pii; const int N = 2e5 + 10; const int M = 4e5 + 10; const int inf = 0x3f3f3f3f; const int mod = 998244353; int n, m; int a[N]; int f[N]; vector<int>e[N]; //int h[N],e[M],ne[M],idx; // void add (int a,int b){ // e[idx]=b; // ne[idx]=h[a]; // h[a]=idx++; // }//稠密图不适合用邻接表 int dfs(int u){ int &v=f[u]; if(v!=-1)return v; v=0; for(int i=0;i<e[u].size();i++)v+=dfs(e[u][i]); v=min(v,a[u]); //cerr<<u<< " "<<v<<endl; return v; } signed main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(false); int t; cin>>t; while (t--) { memset(f,-1,sizeof f); // memset(h,-1,sizeof h); // memset(e,0,sizeof e); // memset(ne,0,sizeof ne); memset(a,0,sizeof a); //idx=0; cin>>n; for(int i=1;i<=n;i++)e[i].clear(); int k; cin>>k; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=k;i++){ int x; cin>>x; f[x]=0; } for(int i=1;i<=n;i++){ int m; cin>>m; if(m==0&&f[i]==-1)f[i]=a[i]; while(m--){ int b; cin>>b; e[i].push_back(b); } } for(int i=1;i<=n;i++)cout<<dfs(i)<<" "; cout<<endl; } return 0; }

__EOF__

本文作者爱飞鱼
本文链接https://www.cnblogs.com/mathiter/p/17594101.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   potential-star  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示