Submission #519172

#TimeUsernameProblemLanguageResultExecution timeMemory
519172MOUF_MAHMALATTorrent (COI16_torrent)C++14
31 / 100
2078 ms23044 KiB
#include<bits/stdc++.h> #define all(s) s.begin(),s.end() #define F first #define S second using namespace std; typedef int ll; ll n,a,b,x,y,dp[300009],pp[300009],ans=1e9; vector<vector<ll> >v; vector<ll>bin; inline void dfs(ll d,ll p) { pp[d]=p; for(auto&z:v[d]) if(z!=p) dfs(z,d); } inline void best(ll d,ll p) { dp[d]=0; vector<ll>o; for(auto&z:v[d]) { if(z==p||(d==x&&z==y)||(d==y&&z==x)) continue; best(z,d); o.push_back(dp[z]); } sort(all(o),greater<ll>()); for(ll i=0; i<o.size(); i++) dp[d]=max(dp[d],o[i]+i+1); } int main() { ios_base::sync_with_stdio(0); cin.tie(0),cout.tie(0); cin>>n>>a>>b; v.resize(n+1); for(ll i=1; i<n; i++) { cin>>x>>y; v[x].push_back(y); v[y].push_back(x); } dfs(a,0); x=b; while(x) { bin.push_back(x); x=pp[x]; } reverse(all(bin)); for(ll i=0;i<bin.size()-1;i++) { x=bin[i]; y=bin[i+1]; best(a,0); best(b,0); ans=min(ans,max(dp[a],dp[b])); } cout<<ans; return 0; }

Compilation message (stderr)

torrent.cpp: In function 'void best(ll, ll)':
torrent.cpp:29:18: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |     for(ll i=0; i<o.size(); i++)
      |                 ~^~~~~~~~~
torrent.cpp: In function 'int main()':
torrent.cpp:52:17: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |     for(ll i=0;i<bin.size()-1;i++)
      |                ~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...