답안 #872061

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
872061 2023-11-12T08:42:26 Z vjudge1 공장들 (JOI14_factories) C++17
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
#include "factories.h"

using namespace std;

typedef pair<int, int> pii;

const int N = 500'000 + 7;
vector<pii> adj[N];
int n;
long long a[N], b[N];
bool x[N], y[N];

void dfs(int v, int p) {
    for (int u : adj[v])
        if (u != p)
            dfs(u, v);
    ord.push_back(v);
}

void Init(int N, int A[], int B[], int D[]) {
    n = N;
    for (int i = 0; i < n - 1; i++) {
        adj[A[i]].push_back({B[i], D[i]});
        adj[B[i]].push_back({A[i], D[i]});
    }
}

void dfs(int v, int p) {
    if (x[v])
        a[v] = 0;
    if (y[v])
        b[v] = 0;

    for (auto [u, w] : adj[v]) {
        a[v] = min(a[v], a[u] + w);
        b[v] = min(b[v], b[u] + w);

        if (u != p)
            dfs(u, v);
    }
}

long long Query(int S, int X[], int T, int Y[]) {
    for (int i = 0; i < n; i++)
        x[i] = y[i] = false, a[i] = b[i] = 1e18;
    for (int i = 0; i < S; i++)
        x[X[i]] = true;
    for (int i = 0; i < T; i++)
        y[Y[i]] = true;

    dfs(0, 0);
    long long res = 1e18;
    for (int i = 0; i < n; i++)
        res = min(res, x[i] + y[i]);
    return res;
}

Compilation message

factories.cpp: In function 'void dfs(int, int)':
factories.cpp:15:23: error: cannot convert 'std::pair<int, int>' to 'int' in initialization
   15 |     for (int u : adj[v])
      |                       ^
factories.cpp:18:5: error: 'ord' was not declared in this scope
   18 |     ord.push_back(v);
      |     ^~~
factories.cpp: At global scope:
factories.cpp:29:6: error: redefinition of 'void dfs(int, int)'
   29 | void dfs(int v, int p) {
      |      ^~~
factories.cpp:14:6: note: 'void dfs(int, int)' previously defined here
   14 | void dfs(int v, int p) {
      |      ^~~
factories.cpp: In function 'long long int Query(int, int*, int, int*)':
factories.cpp:55:35: error: no matching function for call to 'min(long long int&, int)'
   55 |         res = min(res, x[i] + y[i]);
      |                                   ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from factories.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
factories.cpp:55:35: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   55 |         res = min(res, x[i] + y[i]);
      |                                   ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from factories.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
factories.cpp:55:35: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   55 |         res = min(res, x[i] + y[i]);
      |                                   ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from factories.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
factories.cpp:55:35: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   55 |         res = min(res, x[i] + y[i]);
      |                                   ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from factories.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
factories.cpp:55:35: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   55 |         res = min(res, x[i] + y[i]);
      |                                   ^