Submission #401858

#TimeUsernameProblemLanguageResultExecution timeMemory
401858timmyfengAmusement Park (JOI17_amusement_park)C++17
18 / 100
28 ms3892 KiB
#include <bits/stdc++.h>
using namespace std;
 
#include "Joi.h"

vector<vector<int>> adj_joi;
vector<bool> visited_joi;
long long x_joi;

void dfs(int u) {
    MessageBoard(u, x_joi % 2);
    x_joi /= 2;

    visited_joi[u] = true;
    for (auto c : adj_joi[u]) {
        if (!visited_joi[c]) {
            dfs(c);
        }
    }
}
 
void Joi(int n, int m, int *a, int *b, long long x, int t) {
    adj_joi.resize(n);
    visited_joi.resize(n);

    for (int i = 0; i < m; ++i) {
        adj_joi[a[i]].push_back(b[i]);
        adj_joi[b[i]].push_back(a[i]);
    }

    x_joi = x;

    dfs(0);
}
#include <bits/stdc++.h>
using namespace std;
 
#include "Ioi.h"
 
const int L = 60;

vector<vector<int>> adj_ioi;
long long ans_ioi, bit_ioi;
vector<bool> visited_ioi;
vector<int> path_ioi;
int v_ioi;

bool dfs_find(int u) {
    visited_ioi[u] = true;
    if (u == 0) {
        return true;
    }

    for (auto c : adj_ioi[u]) {
        if (!visited_ioi[c] && dfs_find(c)) {
            path_ioi.push_back(c);
            return true;
        }
    }
    return false;
}


bool dfs_read(int u) {
    ans_ioi += v_ioi * bit_ioi;
    bit_ioi *= 2;

    if (__lg(bit_ioi) == L) {
        return true;
    }

    visited_ioi[u] = true;
    for (auto c : adj_ioi[u]) {
        if (!visited_ioi[c]) {
            v_ioi = Move(c);
            if (dfs_read(c)) {
                return true;
            }
            v_ioi = Move(u);
        }
    }
    return false;
}
 
long long Ioi(int n, int m, int *a, int *b, int p, int v, int t) {
    adj_ioi.resize(n);
    visited_ioi.resize(n);

    for (int i = 0; i < m; ++i) {
        adj_ioi[a[i]].push_back(b[i]);
        adj_ioi[b[i]].push_back(a[i]);
    }
 
    dfs_find(p);
 
    v_ioi = v;
    reverse(path_ioi.begin(), path_ioi.end());
    for (auto u : path_ioi) {
        v_ioi = Move(u);
    }

    ans_ioi = 0, bit_ioi = 1;
    visited_ioi.assign(n, false);
 
    dfs_read(0);
 
    return ans_ioi;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...