#include<iostream>
#include<vector>
using namespace std;
#define MX int(1e4+10)
vector<int> a[MX];
int ans;
vector<int> v;
vector<int> t;
void dfs(int x,int dep){
if(dep>ans){
ans = dep;
v = t;
}else if(dep==ans&&v>t){
v = t;
}
for(auto v:a[x]){
t.push_back(v);
dfs(v,dep+1);
t.pop_back();
}
}
int main(){
int n;
cin >> n;
vector<int> book(n);
for (int i = 0; i < n;++i){
int m;
cin >> m;
for (int j = 0; j < m;++j){
int x;
cin >> x;
a[i].push_back(x);
book[x] = 1;
}
}
int root = 0;
while(book[root]==1)
root++;
t.push_back(root);
dfs(root, 1);
cout << ans<<"\n";
for (int i = 0; i < v.size();++i)
cout << v[i] << " \n"[i==v.size()-1];
}
L2-038 病毒溯源 (25 分)
最新推荐文章于 2024-05-28 21:13:10 发布