/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 7ms 7.426 MiB
#2 Accepted 7ms 7.27 MiB
#3 Wrong Answer 8ms 7.227 MiB
#4 Wrong Answer 8ms 7.348 MiB

Code

//....................................<In the name of Allah>...............................//

//.................................<b_bitsmillahir Rahmanir Rahim>...................................//
// Author : Riaj Udd_bitn

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<ll> vl;
typedef pair<ll, ll> pii;
typedef pair<double, double> pdd;

typedef double dl;

#define lower(a, b) lower_bound((a).begin(), (a).end(), b) - (a).begin()
#define mem(a, b) memset(a, b, sizeof(a));

#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()

#define fraction(a)               \
    cout.unsetf(ios::floatfield); \
    cout.precision(a);            \
    cout.setf(ios::fined, ios::floatfield);
//////////////////////////////////////////
template <typename F, typename S>
ostream &operator<<(ostream &os, const pair<F, S> &p)
{
    return os << "(" << p.first << ", " << p.second << ")";
}

template <typename T>
ostream &operator<<(ostream &os, const vector<T> &v)
{
    os << "{";
    for (auto it = v.begin(); it != v.end(); ++it)
    {
        if (it != v.begin())
            os << ", ";
        os << *it;
    }
    return os << "}";
}

template <typename T>
ostream &operator<<(ostream &os, const set<T> &v)
{
    os << "[";
    for (auto it = v.begin(); it != v.end(); ++it)
    {
        if (it != v.begin())
            os << ", ";
        os << *it;
    }
    return os << "]";
}

template <typename T>
ostream &operator<<(ostream &os, const multiset<T> &v)
{
    os << "[";
    for (auto it = v.begin(); it != v.end(); ++it)
    {
        if (it != v.begin())
            os << ", ";
        os << *it;
    }
    return os << "]";
}

template <typename F, typename S>
ostream &operator<<(ostream &os, const map<F, S> &v)
{
    os << "[";
    for (auto it = v.begin(); it != v.end(); ++it)
    {
        if (it != v.begin())
            os << ", ";
        os << it->first << " = " << it->second;
    }
    return os << "]";
}

#define dbg(args...)            \
    do                          \
    {                           \
        cerr << #args << " : "; \
        faltu(args);            \
    } while (0)

void faltu()
{
    cerr << endl;
}

template <typename T>
void faltu(T a[], ll n)
{
    for (ll i = 0; i < n; ++i)
        cerr << a[i] << ' ';
    cerr << endl;
}

template <typename T, typename... hello>
void faltu(T arg, const hello &...rest)
{
    cerr << arg << ' ';
    faltu(rest...);
}

///////////b_bitt-manipulation///////////////
#define Mb(msk) 63 - __builtin_clzll(msk)
#define Lb(msk) __builtin_ctzll(msk)
#define ONE(msk) __builtin_popkll(msk)
#define CHECK(msk, b_bitt) (msk & (1LL << b_bitt))
#define ON(msk, b_bitt) (msk | (1LL << b_bitt))
#define Off(msk, b_bitt) (msk & ~(1LL << b_bitt))
#define CHANGE(msk, b_bitt) (msk ^ (1LL << b_bitt))

//////////////

const ll N = 3e5 + 9;

template <class T>
struct BIT
{ // 1-indexed
    ll n;
    vector<T> t, t1;
    BIT() {}
    BIT(ll _n)
    {
        n = _n;
        t.assign(n + 1, 0);
    }
    T query(ll i)
    {
        T ans = 0;
        for (; i; i -= (i & -i))
            ans ^= t[i];
        return ans;
    }
    void upd(ll i, T val)
    {
        if (i <= 0)
            return;
        for (; i <= n; i += (i & -i))
            t[i] ^= val;
    }
    void upd(ll l, ll r, T val)
    {
        upd(l, val);
        upd(r + 1, -val);
    }
    T query(ll l, ll r)
    {
        return query(r) - query(l - 1);
    }
};

vector<ll> g[N];
ll li[N], in[N], out[N];
ll tim = 0;

void dfs(ll node, ll par)
{
    in[node] = ++tim;

    for (auto u : g[node])
    {
        if (u != par)
        {
            dfs(u, node);
        }
    }
    out[node] = tim;
}

void solve(int tc)
{
    ll n, q;
    cin >> n >> q;
    for (ll i = 0; i < n; i++)
        cin >> li[i];
    for (ll i = 0; i < n - 1; i++)
    {
        ll u, v;
        cin >> u >> v;
        u--, v--;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    dfs(0, -1);
    BIT<ll> bt(2 * n);

    for (int i = 1; i <= q; i++)
    {
        ll nd;
        cin >> nd;
        nd--;
        bt.upd(in[nd], 1);
        bt.upd(out[nd] + 1, 1);
    }
    for (ll i = 0; i < n; i++)
    {
        li[i] ^= (bt.query(in[i]) % 2);
    }
    cout << "Case " << tc << ": ";
    for (ll i = 0; i < n; i++)
        cout << li[i] << " ";
    cout << "\n";
    for (ll i = 0; i <= n; i++)
    {
        g[i].clear();
        in[i] = out[i] = li[i] = 0;
    }
    tim = 0;
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    ll t = 1, cs = 0;
    cin >> t;
    for (int tc = 1; tc <= t; tc++)
    {
        solve(tc);
    }
}

Information

Submit By
Type
Submission
Problem
P1003 Tahsin and Tree
Language
C++17 (G++ 13.2.0)
Submit At
2024-10-03 17:48:27
Judged At
2024-11-11 02:45:37
Judged By
Score
0
Total Time
8ms
Peak Memory
7.426 MiB