1 solutions
-
1
#include<bits/stdc++.h> using namespace std; const int N=310; bool st[N]; vector<int> g[N]; void dfs(int u) //遍历以u为根的子树 { st[u]=1; for(auto x:g[u]) { dfs(x); } } int main() { int n; cin>>n; for(int i=1;i<n;i++) //建立树结构 { int x; cin>>x; g[x].push_back(i); } int m; cin>>m; while(m--) //m次询问 { int x; cin>>x; vector<int> v; for(int i=0;i<x;i++) { int t; cin>>t; v.push_back(t); } for(int i=n-1;i>=0;i--) //从大到小访问所有节点 { memset(st,0,sizeof st); //清空标记 dfs(i); int cnt=0; //不合法个数 for(auto x:v) { if(!st[x]) { cnt=1; } } if(cnt==0) //没有不合法个数 { cout<<i<<endl; break; } } } return 0; }
- 1
Information
- ID
- 2541
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- (None)
- # Submissions
- 4
- Accepted
- 2
- Uploaded By