55462023-07-22 20:14:23gortomiLámpákcpp17Hibás válasz 0/10064ms21304 KiB
#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > g;
vector<int> d;
void dfs(int n, int dep)
{
    d[n] = dep;
    for(auto x : g[n]) dfs(x, dep + 1);
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n, k, q;
    cin >> n >> k >> q;
    g.resize(n + 1);
    d.resize(n + 1);
    for(int i = 2; i <= n; i++)
    {
        int x;
        cin >> x;
        g[x].push_back(i);
    }
    dfs(1, 0);
    while(q--)
    {
        int ans = 0;
        for(int i = 1; i <= n; i++)
        {
            int x;
            cin >> x;
            if(d[i] & k == d[i]) ans ^= x;
        }
        cout << ans << "\n";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1892 KiB
2Hibás válasz3ms2008 KiB
subtask20/15
3Hibás válasz3ms2252 KiB
4Hibás válasz18ms3176 KiB
5Hibás válasz52ms9332 KiB
subtask30/10
6Hibás válasz3ms3012 KiB
7Hibás válasz3ms3212 KiB
8Hibás válasz3ms3428 KiB
9Hibás válasz3ms3640 KiB
10Hibás válasz3ms3732 KiB
subtask40/30
11Hibás válasz14ms3532 KiB
12Hibás válasz14ms3736 KiB
13Hibás válasz14ms3820 KiB
14Hibás válasz14ms3820 KiB
15Hibás válasz14ms3780 KiB
16Hibás válasz14ms3692 KiB
17Hibás válasz14ms3692 KiB
subtask50/45
18Hibás válasz46ms5884 KiB
19Hibás válasz46ms6348 KiB
20Hibás válasz46ms6408 KiB
21Hibás válasz46ms7900 KiB
22Hibás válasz46ms8156 KiB
23Hibás válasz64ms13040 KiB
24Hibás válasz61ms15204 KiB
25Hibás válasz64ms15448 KiB
26Hibás válasz63ms21304 KiB
27Hibás válasz61ms21080 KiB
28Hibás válasz39ms5020 KiB
29Hibás válasz39ms5252 KiB