团体天梯练习 L2-038 病毒溯源
L2-038 病毒溯源

病毒容易发生变异。某种病毒可以通过突变产生若干变异的毒株,而这些变异的病毒又可能被诱发突变产生第二代变异,如此继续不断变化。
现给定一些病毒之间的变异关系,要求你找出其中最长的一条变异链。
在此假设给出的变异都是由突变引起的,不考虑复杂的基因重组变异问题 —— 即每一种病毒都是由唯一的一种病毒突变而来,并且不存在循环变异的情况。
输入格式:
输入在第一行中给出一个正整数
随后
其中
输出格式:
首先输出从源头开始最长变异链的长度。
在第二行中输出从源头开始最长的一条变异链,编号间以 1 个空格分隔,行首尾不得有多余空格。如果最长链不唯一,则输出最小序列。
注:我们称序列 {
输入样例:
10
3 6 4 8
0
0
0
2 5 9
0
1 7
1 2
0
2 3 1
输出样例:
4
0 4 9 1
解题思路
题目大致意思就是要我们求出一颗树上从根节点到叶子节点的最长长度的序列,并且这个序列的字典序尽可能小。所以我们用
当我们在进行
一开始,还需要找到树中的根节点
/* 一切都是命运石之门的选择 El Psy Kongroo */
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#include<deque>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#include<cmath>
#include<functional>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<int, pii> piii;
typedef pair<double, double> pdd;
typedef pair<string, int> psi;
//typedef __int128 int128;
#define PI acos(-1.0)
#define x first
#define y second
//int dx[4] = {1, -1, 0, 0};
//int dy[4] = {0, 0, 1, -1};
const int inf = 0x3f3f3f3f, mod = 1e9 + 7;
const int N = 1e4 + 10;
vector<int> e[N];
int fa[N], root;
int n, res, ed;
void bfs(){
queue<pii> q;
q.push({root, 1});
while(!q.empty()){
auto [u, d] = q.front();
q.pop();
if(d > res){ //只有在大于时更新答案
res = d;
ed = u; //记录最后一个点
}
for(auto &v : e[u]) q.push({v, d + 1});
}
}
void show(){
cout << res << endl;
vector<int> ans;
int cur = ed;
while(cur != root){
ans.push_back(cur);
cur = fa[cur];
}
ans.push_back(root);
reverse(ans.begin(), ans.end());
for(int i = 0; i < (int)ans.size() - 1; i ++ ) cout << ans[i] << ' ';
cout << ans.back() << endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n;
memset(fa, -1, sizeof(fa));
for(int u = 0; u < n; u ++ ){
int k; cin >> k;
while(k -- ){
int v; cin >> v;
e[u].push_back(v);
fa[v] = u;
}
sort(e[u].begin(), e[u].end()); //字典序最小
}
while(~fa[root]) root ++ ;
bfs();
show();
return 0;
}
一切都是命运石之门的选择,本文章来源于博客园,作者:MarisaMagic,出处:https://www.cnblogs.com/MarisaMagic/p/17336132.html,未经允许严禁转载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具