제출 #915081

#제출 시각아이디문제언어결과실행 시간메모리
915081duckindog자매 도시 (APIO20_swap)C++14
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; //#define LOCAL #ifndef LOCAL #include "swap.h" #endif // LOCAL #define int long long const int N = 1e5 + 10; int n, m; vector<pair<int, int>> ad[N]; vector<int> co; void init(int N, int M, vector<int> U, vector<int> V, vector<int> W) { n = N; m = M; for (int i = 0; i < m; ++i) { int u = U[i], v = V[i], w = W[i]; co.push_back(w); ad[u].push_back({v, w}); ad[v].push_back({u, w}); } sort(co.begin(), co.end()); co.resize(unique(co.begin(), co.end()) - co.begin()); } bool dd[N]; int special; bool dfs1(int u, int pre, int cw) { if (u == special) return 1; bool ret = 0; for (auto duck : ad[u]) { int v, w; tie(v, w) = duck; if (v == pre || w > cw) continue; if (!dd[v]) { dd[v] = 1; ret |= dfs1(v, u, cw); } } return ret; } bool dfs2(int u, int pre, int cw) { int cnt = bool(pre); bool ret = 0; map<int, int> d; for (auto duck : ad[u]) { int v, w; tie(v, w) = duck; if (v == pre || w > cw) continue; if (dd[v] && !d[v]) return 1; if (!dd[v]) { d[v] = 1; dd[v] = 1; cnt += 1; ret |= dfs2(v, u, cw); } } return (cnt > 2 || ret); } int getMinimumFuelCapacity(int X, int Y) { int l = 0, r = co.size() - 1; int answer = -1; special = Y; while (l <= r) { int mid = l + r >> 1; bool ret = 1; memset(dd, 0, sizeof dd); ret &= dfs1(X, 0, co[mid]); memset(dd, 0, sizeof dd); ret &= dfs2(X, 0, co[mid]); if (ret) r = mid - 1, answer = co[mid]; else l = mid + 1; } return answer; } int32_t main() { cin.tie(0)->sync_with_stdio(0); if (fopen("duck.inp", "r")) { freopen("duck.inp", "r", stdin); freopen("duck.out", "w", stdout); } int n, m; cin >> n >> m; vector<int> U(m), V(m), W(m); for (int i = 0; i < m; ++i) cin >> U[i] >> V[i] >> W[i]; init(n, m, U, V, W); int q; cin >> q; for (int i = 1; i <= q; ++i) { int X, Y; cin >> X >> Y; cout << getMinimumFuelCapacity(X, Y) << '\n'; } }

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

swap.cpp: In function 'long long int getMinimumFuelCapacity(long long int, long long int)':
swap.cpp:74:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   74 |     int mid = l + r >> 1;
      |               ~~^~~
swap.cpp: In function 'int32_t main()':
swap.cpp:91:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   91 |     freopen("duck.inp", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
swap.cpp:92:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   92 |     freopen("duck.out", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccNFUw7x.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccZ8LRgB.o:swap.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccNFUw7x.o: in function `main':
grader.cpp:(.text.startup+0x1c3): undefined reference to `init(int, int, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
/usr/bin/ld: grader.cpp:(.text.startup+0x223): undefined reference to `getMinimumFuelCapacity(int, int)'
collect2: error: ld returned 1 exit status