#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<vector> #define maxn 2100 using namespace std; vector<int>G[maxn]; void insert(int be, int en) { G[be].push_back(en); } int dp[maxn][10]; int list[maxn]; void dfs(int x, int fa) { int d = 0x3f3f3f3f; for (int i = 0; i < G[x].size(); i++) { int p = G[x][i]; if (p == fa) continue; dfs(p, x); dp[x][0] += min(dp[p][1], dp[p][2]); dp[x][1] += min(dp[p][1], dp[p][2]); dp[x][2] += min(dp[p][1], min(dp[p][2], dp[p][0])); d = min(dp[p][2] - min(dp[p][1], dp[p][2]), d); } dp[x][1] += d; dp[x][2] += list[x]; return; } int main() { int n; scanf("%d", &n); int be, k, en; for (int i = 1; i <= n; i++) { scanf("%d", &be); scanf("%d %d", &list[be], &k); while (k--) { scanf("%d", &en); insert(be, en); insert(en, be); } } dfs(1, -1); printf("%d ", min(dp[1][1], dp[1][2])); return 0; }