1 条题解
-
0
C++ :
#include<bits/stdc++.h> using namespace std; int n,m,q,f[302],a[302]; bool find(int x,int y){ //找x,当前为y if(!y&&x) return 0; if(f[y]==x) return 1; return find(x,f[y]); } bool chk(int x){ //判断如果以x为管理员满不满足要求 for(int i=1;i<=m;i++){ if(!find(x,a[i])&&a[i]!=x) return 0; } return 1; } int main(){ scanf("%d",&n); for(int i=1;i<n;i++) scanf("%d",&f[i]); scanf("%d",&q); while(q--){ scanf("%d",&m); for(int i=1;i<=m;i++) scanf("%d",&a[i]); for(int i=n-1;i>=0;i--){ //从后往前遍历 if(!i) puts("0"); //只能是老板了,特判一下会更快 else if(chk(i)){ printf("%d\n",i); break; } } } return 0; }
- 1
信息
- ID
- 9173
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者