Submission #1028583

#TimeUsernameProblemLanguageResultExecution timeMemory
1028583MMihalevTorrent (COI16_torrent)C++14
31 / 100
2019 ms24952 KiB
#include<iostream> #include<algorithm> #include<iomanip> #include<cmath> #include<cstring> #include<vector> #include<queue> #include<stack> #include<tuple> #include<set> #include<map> #include<random> #include<chrono> #include<array> using namespace std; const int MAX_N=3e5+5; vector<int>g[MAX_N]; int a,b; int n; int parent[MAX_N]; bool used[MAX_N]; void initdfs(int u,int par) { for(int v:g[u]) { if(v==par)continue; parent[v]=u; initdfs(v,u); } } void paint(int u) { used[u]=1; for(int v:g[u]) { if(v==parent[u])continue; paint(v); } } int dfs(int u,int par,bool wh) { vector<int>mins; for(int v:g[u]) { if(v==par or used[v]!=wh)continue; mins.push_back(dfs(v,u,wh)); } if(mins.size()==0)return 0; sort(mins.rbegin(),mins.rend()); int ans=0; for(int i=0;i<mins.size();i++) { ans=max(ans,mins[i]+i+1); } return ans; } signed main () { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); cin>>n>>a>>b; for(int i=1;i<n;i++) { int u,v; cin>>u>>v; g[u].push_back(v); g[v].push_back(u); } initdfs(a,0); int u=b; int ans=1e9; while(u!=a) { paint(u); ans=min(ans,max(dfs(a,0,0),dfs(b,0,1))); u=parent[u]; } cout<<ans<<"\n"; return 0; }

Compilation message (stderr)

torrent.cpp: In function 'int dfs(int, int, bool)':
torrent.cpp:51:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |     for(int i=0;i<mins.size();i++)
      |                 ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...