제출 #1297396

#제출 시각아이디문제언어결과실행 시간메모리
1297396baotoan655Race (IOI11_race)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#define file(name)  if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
using namespace std;

int best_path(int n, int k, int h[][2], int l[]) {
    vector<vector<pair<int, int>>> g(n);
    for(int i = 0; i < n - 1; ++i) {
        int u = h[i][0], v = h[i][1];
        g[u].emplace_back(v, l[i]);
        g[v].emplace_back(u, l[i]);
    }
    int ans = n;
    vector<bool> del(n, false);
    vector<int> sz(n, 0);
    function<void(int, int)> get_sz = [&](int u, int p) -> void {
        sz[u] = 1;
        for(pair<int, int> e : g[u]) {
            int v = e.first;
            if(v == p || del[v]) continue;
            get_sz(v, u);
            sz[u] += sz[v];
        }
    };
    function<int(int, int, int)> get_cen = [&](int u, int p, int tot) -> int {
        for(pair<int, int> e : g[u]) {
            int v = e.first;
            if(v == p || del[v]) continue;
            if(sz[v] > tot / 2) return get_cen(v, u, tot);
        }
        return u;
    };
    map<long long, int> mp;
    function<void(int, int, int, long long, bool)> dfs = [&](int u, int p, int depth, long long dist, bool sus) {
        if(!sus) {
            if(mp.count(k - dist)) ans = min(ans, depth + mp[k - dist]);
        } else {
            if(mp.count(dist)) mp[dist] = min(mp[dist], depth);
            else mp[dist] = depth;
        }
        for(pair<int, int> e : g[u]) {
            int v = e.first, w = e.second;
            if(v == p || del[v]) continue;
            dfs(v, u, depth + 1, dist + w, sus);
        }
    };
    function<void(int)> centroid = [&](int u) -> void {
        get_sz(u, -1);
        int cen = get_cen(u, -1, sz[u]);
        del[cen] = true;
        mp.clear();
        mp[0] = 0;
        for(pair<int, int> e : g[cen]) {
            int v = e.first, w = e.second;
            if(del[v]) continue;
            dfs(v, cen, 1, w, false);
            dfs(v, cen, 1, w, true);
        }
        for(pair<int, int> e : g[cen]) {
            int v = e.first;
            if(del[v]) continue;
            centroid(v);
        }
    };
    centroid(1);
    if(ans >= n) ans = -1;
    return ans;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    file("A") else file("task");
    int n, k;
    cin >> n >> k;
    int h[n - 1][2], l[n - 1];
    for(int i = 0; i < n; ++i) {
        int u, v, c;
        cin >> u >> v >> c;
        h[i][0] = u;
        h[i][1] = v;
        l[i] = c;
    }
    cout << best_path(n, k, h, l) << '\n';
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

race.cpp: In function 'int main()':
race.cpp:2:58: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    2 | #define file(name)  if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
      |                                                   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
race.cpp:73:5: note: in expansion of macro 'file'
   73 |     file("A") else file("task");
      |     ^~~~
race.cpp:2:91: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    2 | #define file(name)  if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
      |                                                                                    ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
race.cpp:73:5: note: in expansion of macro 'file'
   73 |     file("A") else file("task");
      |     ^~~~
race.cpp:2:58: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    2 | #define file(name)  if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
      |                                                   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
race.cpp:73:20: note: in expansion of macro 'file'
   73 |     file("A") else file("task");
      |                    ^~~~
race.cpp:2:91: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    2 | #define file(name)  if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); }
      |                                                                                    ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
race.cpp:73:20: note: in expansion of macro 'file'
   73 |     file("A") else file("task");
      |                    ^~~~
/usr/bin/ld: /tmp/ccUcmZUH.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccXOKDl1.o:race.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status