제출 #1263839

#제출 시각아이디문제언어결과실행 시간메모리
1263839Yelarys경주 (Race) (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; }

컴파일 시 표준 에러 (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...