1 solutions
-
0
C++ :
#include <bits/stdc++.h> using namespace std; const int MAX_N = 3e2 + 9; int n, q, f[MAX_N], m, x, num[MAX_N]; void dfs(int x) { num[x]++; // num[i]:记录编号i访问的次数 if (f[x] == -1) return; dfs(f[x]); } int main() { cin >> n; f[0] = -1; //根结点的直接领导 for (int i = 1; i <= n - 1; i++) cin >> f[i]; // 编号为i的员工的直接领导为f[i] cin >> q; while (q--) // q场合作需要安排 { cin >> m; // 合作的员工的数量 memset(num , 0 , sizeof(num)); for (int i = 1; i <= m; i++) { cin >> x; // 参与合作的员工编号 dfs(x); } for(int i = n - 1; i >= 0; i--) //编号从大到小 { if(num[i] == m) //编号为i访问了m次 说明i能够管理者m个合作的员工 { cout << i << endl; break; } } } return 0; }
- 1
Information
- ID
- 119
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By