Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define int long long
- using namespace std;
- vector<vector<int>> g;
- vector<int> c;
- vector<int> dp;
- vector<int> ans;
- void dfs(int v) {
- for(int i = 0; i < g[v].size(); i++) {
- int to = g[v][i];
- if(dp[to] != 0) continue;
- dfs(to);
- dp[v] += dp[to];
- }
- ans.push_back(v);
- dp[v] += c[v];
- }
- signed main() {
- int n;
- cin >> n;
- g.resize(n);
- c.resize(n);
- dp.resize(n);
- for(int i = 0; i < n; i++) {
- cin >> c[i];
- }
- for(int i = 0; i < n; i++) {
- int ch;
- cin >> ch;
- for(int j = 0; j < ch; j++) {
- int v;
- cin >> v;
- v--;
- g[i].push_back(v);
- }
- }
- dfs(0);
- cout << dp[0] << ' ' << ans.size() << '\n';
- for(int i = 0; i < ans.size(); i++) {
- cout << ans[i] + 1 << ' ';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement