#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include <iomanip>#include <cstdlib>#include <limits.h>#include <string.h>#include <iostream>#include <fstream>#include <algorithm>using namespace std;#define LL long long#define MIN INT_MIN#define MAX INT_MAX#define PI acos(-1.0)#define FRE freopen ("input.txt","r",stdin)#define FF freopen ("output.txt","w",stdout)#define N 205vector<int> v[N];int maxm;int dep;int dfs(int x,int pre) { int res = 0; int d1 = 0,d2 = 0;//最大&次大 int i,j; for (i = 0; i < v[x].size(); i++) { if (v[x][i] != pre) { res = max(res,dfs(v[x][i],x)); if (dep > d1) { d2 = d1; d1 = dep; } else { d2 = max(dep,d2); } } } res = max(res,d1+d2); dep = d1 + 1; return res;}int main () { int n; scanf("%d",&n); int i,j; int t = n - 1; while (t--) { int a,b; scanf("%d%d",&a,&b); v[a].push_back(b); v[b].push_back(a); } maxm = 0; //枚舉每條邊 for (i = 1; i <= n; i++) { for (j = 0; j < v[i].size(); j++) { int x = i; int y = v[i][j]; int a = dfs(x,y); int b = dfs(y,x); if(a*b > maxm) { maxm = a*b; } } } printf("%d\n",maxm); return 0;}