Submission #1365844

#TimeUsernameProblemLanguageResultExecution timeMemory
1365844blue_phoenixxRace (IOI11_race)C++20
Compilation error
0 ms0 KiB
#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <chrono>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdint>
#include <functional>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <string>
#include <thread>
#include <typeinfo>
#include <type_traits>
#include <unordered_set>
#include <utility>
#include <vector>
using namespace std;
#define pb push_back
#define F(i, l, r) for (int i = l; i < l + r; i++)
#define all(v) v.begin(), v.end()
#define allr(v) v.rbegin(), v.rend()
#define PI acos(-1)
#define bit_len(n) (n?(64 - __builtin_clzll(n)):0)
#define bit_count(n) __builtin_popcountll(n)
#define yes(i) cout << (i ? "Yes" : "No") << endl;
#define X first
#define R real()
#define Y second
#define I imag()
#define sz(v) (int)(v).size()
#define vvl(x, n, m, val) vector<vector<ll>> x(n, vector<ll>(m, val))
#define bb __int128_t
typedef long long ll;
typedef std::pair<int, int> pi;
ll inf_ll = 1e18;
const ll inf = 1e9;
typedef long double ld;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vll;
typedef vector<bool> vb;
typedef vector<string> vs;
typedef vector<pll> vp;
mt19937_64 mt(727);
uniform_int_distribution<ll> uni(1, inf / 2);
const int Mod[] = {998244353, (int)1e9 + 7};
const int max_n = 1e6 + 2;
const int N = 100;
vi dr = {-1, 1, 0, 0};
vi dc = {0, 0, -1, 1};
string dir = "DURL";
ll ncr(ll n, ll k)
{
    if (n < k)
        return 0;
    if (n < 0 || k < 0)
        return 0;
    k = min(k, n - k);
    ll res = 1;
    F(i, 0, k)
    {
        res = (ll)(res * (n - i));
        res = (ll)res / (i + 1);
    }
    return res;
}
int sqr(ll x)
{
    ll l = 0, r = x;
    int val = 0;
    while (l <= r)
    {
        ll m = (l + r) / 2;
        if (m * m >= x)
        {
            r = m - 1;
            val = m;
        }
        else
            l = m + 1;
    }
    return val;
}
void chmin(int &a, int b)
{
    a = min(a, b);
}
void chmax(int &a, int b) {
    a = max(a, b);
}

long long gcd(long long a, long long b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}
long long lcm(long long a, long long b) {
    return a*(b/gcd(a, b));
}

const int B = 500;

void solve() {
    int n, k;
    cin >> n >> k;
    vector<pi>adj[n];
    for(int i=1;i<n;i++){
        int u, v, w;
        cin >> u >> v >> w;
        adj[u].pb({v, w}), adj[v].pb({u, w});
    }
    vector<int>path(n), dep(n), sub(n);
    vector<pi>pres[n];
    int ans = inf;
    function<void(int,int, map<ll, int>&)>dfs=[&](int u, int p, map<ll,int>& mp){
        mp[path[u]] = dep[u];
        pres[u].emplace_back(path[u], dep[u]);
        for(auto [v, w]:adj[u]){
            if(v==p) continue;
            path[v] = path[u] + w;
            dep[v] = dep[u] + 1;
            map<ll,int>curr;
            dfs(v, u, curr);
            if(sz(pres[u]) < sz(pres[v])){
                swap(pres[u], pres[v]);
                swap(mp, curr);
            }
            for(auto [x, d]:pres[v]){
                if(mp.find(2*path[u]+k-x)==mp.end()) continue;
                ans = min(ans, mp[2*path[u]+k-x] + d - 2*dep[u]);
            }
            for(auto [x, d]:pres[v]){
                pres[u].emplace_back(x, d);
                if(mp.find(x)!=mp.end()){
                    mp[x] = min(mp[x], d);
                }
                else{
                    mp[x] = d;
                }
            }
        }
    };
    map<ll,int>tmp;
    dfs(0, 0, tmp);
    cout<<(ans==inf?-1:ans)<<endl;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    /*freopen("cowland.in", "r", stdin);
    freopen("cowland.out", "w", stdout);*/
    cout << setprecision(10) << fixed;
    int tt = 1;
    auto begin = std::chrono::high_resolution_clock::now();
    while (tt--) {
        solve();
    }
    /*auto end = std::chrono::high_resolution_clock::now();
    auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin);
    cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\n";*/
    return 0;
}


Compilation message (stderr)

/usr/bin/ld: /tmp/cc1CT1gg.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccLbkF8h.o:race.cpp:(.text.startup+0xa0): first defined here
/usr/bin/ld: /tmp/cc1CT1gg.o: in function `main':
grader.cpp:(.text.startup+0x28): undefined reference to `best_path(int, int, int (*) [2], int*)'
collect2: error: ld returned 1 exit status