L2 - 2 病毒溯源

代码

#include<iostream> #include<vector> #include<algorithm> using namespace std; const int N = 10010; vector<int>v[N]; bool isroot[N]; vector<int> path; vector<int>temppath; int ans = 0; void dfs(int root, int len){ if(v[root].size() == 0){ if(len < ans) return; if(len > ans){ ans = len; path = temppath; } } for(int i = 0; i < v[root].size(); i++){ temppath.push_back(v[root][i]); dfs(v[root][i],len + 1); temppath.pop_back(); } } bool cmp(int a, int b){ return a < b; } int main(){ int n; cin >> n; for(int i = 0; i < n; i++){ int k ; cin >> k; int x; for(int j = 1; j <= k; j++){ cin >>x; v[i].push_back(x); isroot[x] = 1; } if(v[i].size()) sort(v[i].begin(), v[i].end(), cmp);//从小到大排序就可以实现优先选择较小的 } vector<int>root; for(int i = 0; i < n; i++){ if(isroot[i] == 0){ root.push_back(i); break; } } for(int i = 0; i < root.size();i++){ temppath.clear(); temppath.push_back(root[i]); dfs(root[i],1); } cout << ans << endl; for(int i = 0; i < path.size(); i++){ if(i) cout <<" "; cout << path[i]; } return 0; }

__EOF__

本文作者WangZhenHui
本文链接https://www.cnblogs.com/index-12/p/17339794.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   天黑星更亮  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示