Codeforces Beta Round #14 (Div. 2)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove
晚上 队内训练做的。。。难度适中struct Node{ int u,v;}e[200];int n,a,b,ans,idx;vector<int>v[205];int bfs(int s){ bool flag[205]; int dist[205]; mem(flag,false); queue<int>que; mem(dist,0); que.push(s); dist[s]=0; flag[s]=true; while(!que.empty()){ int u=que.front(); que.pop(); for(int i=0;i<v[u].size();i++){ int m=v[u][i]; if((u==a&&m==b)||(u==b&&m==a)) continue; if(flag[m]) continue; dist[m]=dist[u]+1; que.push(m); flag[m]=true; } } ans=0; for(int i=1;i<=n;i++) if(dist[i]>ans) ans=dist[i],idx=i; return ans==0?s:idx;}int main(){ scanf("%d",&n); for(int i=0;i<n-1;i++){ scanf("%d%d",&e[i].u,&e[i].v); v[e[i].u].pb(e[i].v); v[e[i].v].pb(e[i].u); } int answer=0; for(int i=0;i<n-1;i++){ a=e[i].u;b=e[i].v; bfs(bfs(a)); int ret=ans; bfs(bfs(b)); ret*=ans; answer=max(answer,ret); } printf("%d\n",answer); return 0;}