记录编号 |
602811 |
评测结果 |
A |
题目名称 |
2997.[POJ 1463]战略游戏 |
最终得分 |
100 |
用户昵称 |
二乾五 |
是否通过 |
通过 |
代码语言 |
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;
}