Submission #1196696

#TimeUsernameProblemLanguageResultExecution timeMemory
1196696cowwycowRace (IOI11_race)C++20
100 / 100
344 ms98228 KiB
#pragma GCC optimize("O3,unroll-loops") #include <bits/stdc++.h> using namespace std; #define name "aaaaaa" using ll = long long; using db = double; using pii = pair<int, int>; using pll = pair<ll, ll>; using pdb = pair<db, db>; using ppii = pair<int, pii>; using ull = unsigned long long; using vvi = vector<vector<ll>>; void file(){ ios_base::sync_with_stdio(0); cin.tie(0); if(fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); } } const int N = 2e5 + 5, M = 1e6 + 5; const int inf = 1e9; int n; ll k; vector<pii> e[N]; int ans = inf; map<ll, int> mp[N]; void dfs(int u, int par, int dep, ll dist){ ll cur = k + dist * 2; mp[u][dist] = dep; for(auto edge : e[u]){ int v = edge.first; ll w = edge.second; if(v == par) continue; dfs(v, u, dep + 1, dist + w); if(mp[u].size() < mp[v].size()) swap(mp[u], mp[v]); for(auto i : mp[v]){ if(mp[u].find(cur - i.first) != mp[u].end()){ ans = min(ans, i.second + mp[u][cur - i.first] - dep * 2); } } for(auto i : mp[v]){ if(mp[u].find(i.first) == mp[u].end()){ mp[u][i.first] = i.second; }else{ mp[u][i.first] = min(mp[u][i.first], i.second); } } } } int best_path(int N, int K, int edges[][2], int weights[]){ n = N; k = K; for(int i = 0; i < n - 1; i++){ int u = edges[i][0], v = edges[i][1], w = weights[i]; u++; v++; e[u].push_back({v, w}); e[v].push_back({u, w}); } dfs(1, -1, 0, 0); if(ans == inf) ans = -1; return ans; }

Compilation message (stderr)

race.cpp: In function 'void file()':
race.cpp:17:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |                 freopen(name".inp", "r", stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
race.cpp:18:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |                 freopen(name".out", "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...