Submission #1263839

#TimeUsernameProblemLanguageResultExecution timeMemory
1263839YelarysRace (IOI11_race)C++20
0 / 100
17 ms35648 KiB
#include "race.h"
#include <bits/stdc++.h>
using namespace std;

//#define int long long
typedef long double ld;
typedef long long ll;
typedef unsigned long long ull;
#define pb push_back
#define F first
#define S second
#define mp make_pair
#define sz(x)(int) x.size()
#define ins insert
#define speed ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
#define rep(i, a, b) for (int i = a; i < b; i++)
#define pf push_front
#define pb push_back
#define all(x) x.begin(), x.end()
#define pii pair < int, int >
#define pll pair < ll, ll >
#define vi vector < int >
#define vll vector < long long >
#define vpii vector < pair < int, int >>
#define vpll vector < pair < long long, long long >>
#define mem(x, val) memset(x, val, sizeof x)
#define debug cerr << "OK\n";

mt19937 bruh(chrono::steady_clock::now().time_since_epoch().count());
mt19937_64 rofl(chrono::steady_clock::now().time_since_epoch().count());

const int inf = 1e9 + 100;
const ll INF = (ll)1e18;
const ll INF1 = (ll)1e14 + 1;
const int MAXN = (int)5e5 + 5;
const ll mod = (ll)1e9 + 7;
const ll mod1 = (ll)1e9 + 9;
const ll MAX = (ll)1e6 + 5;
//const int P = 331;
//const int K = 17;

ll binpow(ll a, ll n) {
    if (n == 0) return 1;
    if (n == 1) return (a % mod);
    ll r = binpow(a, n / 2);
    if (n & 1) return (((r * r) % mod) * a) % mod;
    return (r * r) % mod;
}

void setIO(string s) {
    freopen((s + ".in").c_str(), "r", stdin);
    freopen((s + ".out").c_str(), "w", stdout);
}

ll add(ll a, ll b) {
    return (((a + b) % mod) + mod) % mod;
}

ll mul(ll a, ll b) {
    return (a * b) % mod;
}

int n, k;
map<int, int> ma[MAXN]; 
int sum[MAXN], d[MAXN];
vector<pii> g[MAXN];
int ans = inf;

void dfs(int v, int par = -1) {
    for (auto [u, w] : g[v]) {
        if (u == par) continue;
        sum[u] = sum[v] + w;
        d[u] = d[v] + 1;
        dfs(u, v);
    }
    ma[v][sum[v]] = d[v];
    for (int i = 1; i < sz(g[v]); i++) {
        int x = g[v][i - 1].F, y = g[v][i].F;
        if (sz(ma[x]) > sz(ma[y])) swap(ma[x], ma[y]);
        for (auto [sx, dx] : ma[x]) {
            int sy = k + sum[v] - sx;
            if (ma[y].count(sy)) {
                int dy = ma[y][sy];
                ans = min(ans, dx + dy - 2 * d[v]);
            }
        }
        for (auto [sx, dx] : ma[x]) {
            if (!ma[y].count(sx)) {
                ma[y][sx] = dx;
                continue;
            }
            ma[y][sx] = min(ma[y][sx], dx);
        }
    }
    if (sz(g[v])) {
        int y = g[v].back().F;
        int sy = k + sum[v];
        if (ma[y].count(sy)) {
            int dy = ma[y][sy];
            ans = min(ans, dy - d[v]);
        }
        swap(ma[v], ma[y]);
        if (!ma[v].count(sum[v])) {
            ma[v][sum[v]] = d[v];
        } else {
            ma[v][sum[v]] = min(ma[v][sum[v]], d[v]);
        }
    }
}

int best_path(int N, int K, int H[][2], int L[]) {
    n = N, k = K;
    for (int i = 0; i < N; i++) {
        g[H[i][0]].pb({H[i][1], L[i]});
        g[H[i][1]].pb({H[i][0], L[i]});
    }

    return N;
}

Compilation message (stderr)

race.cpp: In function 'void setIO(std::string)':
race.cpp:51:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   51 |     freopen((s + ".in").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
race.cpp:52:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   52 |     freopen((s + ".out").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...