제출 #344671

#제출 시각아이디문제언어결과실행 시간메모리
344671maskoff관광지 (IZhO14_shymbulak)C++14
50 / 100
1562 ms21868 KiB
#include <bits/stdc++.h>

#define file ""

#define all(x) x.begin(), x.end()

#define sc second
#define fr first

#define pb push_back
#define mp make_pair

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

const ll inf = 1e18 + 5;
const ll mod = 1e9 + 7;

const int N = 6e5 + 5;

int dx[] = {+1, 0, -1, 0};
int dy[] = {0, +1, 0, -1};

int n, mx;
vector<int> g[N], ans(N);

void go(int x) {
	vector<int> dp(n + 1, 1e9), cnt(n + 1);
	cnt[x] = 1;
	dp[x] = 0;
	queue<int> q;
	q.push(x);
	while (!q.empty()) {
	 	int v = q.front();
	 	q.pop();
	 	for (int to : g[v]) {
	 	 	if (dp[to] == dp[v] + 1) {
	 	 	 	cnt[to] += cnt[v];
	 	 	 	continue;
	 	 	}
	 	 	if (dp[to] > dp[v] + 1) {
	 	 		cnt[to] = cnt[v];
	 	 	 	dp[to] = dp[v] + 1;
	 	 	 	q.push(to);
	 	 	}
	 	}
	}
	//cerr << x << "\n";
	for (int i = 1; i <= n; i++) {
	 	//cerr << i << " " << dp[i] << " " << cnt[i] << endl;
	 	ans[dp[i]] += cnt[i];
	 	mx = max(mx, dp[i]);
	}
	cerr << endl;
}

int main() {
	ios_base :: sync_with_stdio(false);               
	cin.tie(nullptr);
	srand(time(nullptr));
	cin >> n;
	for (int i = 1; i <= n; i++) {
	 	int x, y;
	 	cin >> x >> y;
	 	g[x].pb(y);
	 	g[y].pb(x);
	}
	for (int i = 1; i <= n; i++) {
	 	go(i);
	}
	cout << ans[mx] / 2;
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...