제출 #1111854

#제출 시각아이디문제언어결과실행 시간메모리
1111854vjudge1관광지 (IZhO14_shymbulak)C++17
0 / 100
69 ms10144 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define ld double const int INF = 1e18; const int sz = 2e5 + 9; int n1 = -1 , n2 = -1 , cnt1 = 0 , cnt2 = 0; vector < int > q1; vector < int > q2; int n; vector < vector < int > > adj; vector < int > dist(sz , -1); queue < int > q; void bfs(int s) { dist[s] = 0; q.push(s); while(!q.empty()) { int v = q.front(); q.pop(); for(int u : adj[v]) { if(dist[u] == -1) { dist[u] = dist[v] + 1; q.push(u); } } } } void fix() { dist.assign(sz , -1); q = {}; } signed main() { std::ifstream input("shymbulak.in"); std::ofstream output("shymbulak.out"); cin >> n; adj.resize(n + 1); for(int i = 1;i <= n;i++){ int u , v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } bfs(1); int maks1 = -1 * INF; for(int i = 2;i <= n;i++) maks1 = max(maks1 , dist[i]); for(int i = 2;i <= n;i++) { if(dist[i] == maks1){ n1 = i; break; } } fix(); int maks = -1 * INF; bfs(n1); maks1 = -1 * INF; for(int i = 1;i <= n;i++) { if(i == n1) continue; maks1 = max(maks1 , dist[i]); maks = max(maks , dist[i]); } for(int i = 1;i <= n;i++) { if(i == n1) continue; if(dist[i] == maks1){ q1.push_back(i); n2 = i; cnt1++; } } fix(); bfs(n2); maks1 = -1 * INF; for(int i = 1;i <= n;i++) { if(i == n2) continue; maks1 = max(maks1 , dist[i]); } for(int i = 1;i <= n;i++) { if(i == n2) continue; if(dist[i] == maks1){ cnt2++; q2.push_back(i); } } vector < int > ls; int node = -1; if(cnt1 > cnt2){ node = n1; ls = q1; } else{ node = n2; ls = q2; } cout << max((maks1-1) * 2 , (maks-1) * 2) << endl; }

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

shymbulak.cpp: In function 'int main()':
shymbulak.cpp:101:8: warning: variable 'node' set but not used [-Wunused-but-set-variable]
  101 |    int node = -1;
      |        ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...