제출 #915038

#제출 시각아이디문제언어결과실행 시간메모리
915038duckindog자매 도시 (APIO20_swap)C++14
0 / 100
2027 ms14684 KiB
#include "swap.h" #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 10, M = 1e3 + 10; int n, m; vector<pair<int, int>> ad[N]; bool chain; vector<int> co; void init(int N, int M, vector<int> U, vector<int> V, vector<int> W) { n = N; m = M; chain = 1; 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}); if (ad[u].size() > 2 || ad[v].size() > 2) chain = 0; } 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 = 0; bool ret = 0; for (auto duck : ad[u]) { int v, w; tie(v, w) = duck; if (v == pre || w > cw) continue; if (dd[v]) return 1; dd[v] = 1; cnt += 1; ret |= dfs2(v, u, cw); } return (cnt > 2 || ret); } int getMinimumFuelCapacity(int X, int Y) { if (chain) return -1; int l = 0, r = co.size() - 1; int answer = 0; 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; }

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

swap.cpp: In function 'int getMinimumFuelCapacity(int, int)':
swap.cpp:67:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   67 |     int mid = l + r >> 1;
      |               ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...