55472023-07-22 20:27:06gortomiLámpákcpp17Hibás válasz 0/10064ms21576 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
1Hibás válasz3ms2040 KiB
2Elfogadva3ms2248 KiB
subtask20/15
3Hibás válasz3ms2480 KiB
4Hibás válasz18ms3376 KiB
5Elfogadva50ms9504 KiB
subtask30/10
6Hibás válasz3ms2896 KiB
7Hibás válasz3ms2876 KiB
8Hibás válasz3ms3008 KiB
9Hibás válasz3ms3092 KiB
10Hibás válasz3ms3096 KiB
subtask40/30
11Elfogadva14ms3300 KiB
12Elfogadva14ms3284 KiB
13Hibás válasz14ms3504 KiB
14Hibás válasz14ms3860 KiB
15Hibás válasz14ms3928 KiB
16Hibás válasz14ms4148 KiB
17Hibás válasz14ms4164 KiB
subtask50/45
18Hibás válasz48ms6092 KiB
19Hibás válasz46ms6864 KiB
20Hibás válasz48ms6732 KiB
21Hibás válasz46ms8444 KiB
22Hibás válasz46ms8372 KiB
23Elfogadva64ms13008 KiB
24Hibás válasz63ms15344 KiB
25Hibás válasz63ms15496 KiB
26Hibás válasz63ms21476 KiB
27Hibás válasz64ms21576 KiB
28Hibás válasz41ms5504 KiB
29Hibás válasz39ms5588 KiB