记录编号 602811 评测结果 A
题目名称 2997.[POJ 1463]战略游戏 最终得分 100
用户昵称 Gravatar二乾五 是否通过 通过
代码语言 C++ 运行时间 0.172 s
提交时间 2025-07-05 20:55:40 内存使用 4.02 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define cl(a) memset(a,0,sizeof a)
#define copy(a,b) copy(begin(a),end(a),begin(b))
#define ld long double
#define dot(x) fixed<<setprecision(x)
#define foru(a,b,c) for(ll a=b;a<=c;a++)

ll n,f[1505][2],t;
bool vis[1505];
vector<vector<ll>>a(1505);

ll real_mian(ll n);

int main(){
    ll n;
    while(cin>>n){
        real_mian(n);
    }
    return 0;
}

void dfs(ll u){
    f[u][1]=1,f[u][0]=0;
    for(auto v:a[u]){
        dfs(v);
        f[u][0]+=f[v][1];
        f[u][1]+=min(f[v][1],f[v][0]);
    }
}

ll real_mian(ll n){
    fill(vis,vis+n,0);
    foru(i,1,n){
        ll x,u;
        scanf("%lld:(%lld)",&u,&x);
        a[u].clear();
        foru(j,1,x){
            ll v;
            cin>>v;
            a[u].push_back(v);
            vis[v]=1;
        }
    }
    ll rt;
    foru(i,0,n-1)rt=vis[i]?rt:i;
    dfs(rt);
    cout<<min(f[rt][1],f[rt][0])<<endl;
    return 0;
}