제출 #1199579

#제출 시각아이디문제언어결과실행 시간메모리
1199579A_M_NamdarShymbulak (IZhO14_shymbulak)C++20
50 / 100
303 ms884 KiB
#include <bits/stdc++.h> using namespace std; const long long N = 5050; long long n, d[N], cnt[N]; vector<long long> adj[N]; pair<long long, long long> operator+(pair<long long, long long> p1, pair<long long, long long> p2) { pair<long long, long long> res = {max(p1.first, p2.first), 0}; if (p1.first == res.first) res.second += p1.second; if (p2.first == res.first) res.second += p2.second; return res; } void bfs(long long st) { memset(d, 63, sizeof d); memset(cnt, 0, sizeof cnt); cnt[st] = 1; d[st] = 0; queue<long long> q; q.push(st); while (!q.empty()) { long long u = q.front(); q.pop(); for (long long v: adj[u]) { if (d[v] > d[u] + 1) { d[v] = d[u] + 1; q.push(v); } if (d[v] == d[u] + 1) cnt[v] += cnt[u]; } } } void input() { cin >> n; for (long long i = 0, u, v; i < n; i++) { cin >> u >> v; u--, v--; adj[u].push_back(v); adj[v].push_back(u); } } void solve() { pair<long long, long long> ans = {-1, 0}; for (long long i = 0; i < n; i++) { bfs(i); for (long long j = 0; j < n; j++) { ans = (ans + make_pair(d[j], cnt[j])); } } cout << ans.second / 2; } int main() { ios:: sync_with_stdio(0), cin.tie(0), cout.tie(0); input(); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...