Submission #210003

#TimeUsernameProblemLanguageResultExecution timeMemory
210003Alexa2001Hotspot (NOI17_hotspot)C++17
100 / 100
666 ms61816 KiB
#include <bits/stdc++.h> using namespace std; ///10:23 const int Nmax = 5005; long double ans[Nmax]; bool used[Nmax]; vector<int> v[Nmax]; int dist[Nmax][Nmax], pos[Nmax][Nmax], A[Nmax], B[Nmax]; int n, m, k; void doo(int node, int dist[], int pos[]) { int i; for(i=0; i<n; ++i) dist[i] = -1; dist[node] = 0; pos[node] = 1; queue<int> q; q.push(node); while(q.size()) { node = q.front(); q.pop(); for(auto it : v[node]) if(dist[it] == -1) { dist[it] = dist[node] + 1; pos[it] = pos[node]; q.push(it); } else if(dist[it] == dist[node] + 1) pos[it] += pos[node]; } } int main() { // freopen("input", "r", stdin); cin.sync_with_stdio(false); cin.tie(0); cin >> n >> m; int i, j; for(i=1; i<=m; ++i) { int x, y; cin >> x >> y; v[x].push_back(y); v[y].push_back(x); } cin >> k; for(i=1; i<=k; ++i) { cin >> A[i] >> B[i]; if(!used[A[i]]) doo(A[i], dist[A[i]], pos[A[i]]), used[A[i]] = 1; if(!used[B[i]]) doo(B[i], dist[B[i]], pos[B[i]]), used[B[i]] = 1; } for(i=1; i<=k; ++i) for(j=0; j<n; ++j) if(dist[A[i]][j] + dist[B[i]][j] == dist[A[i]][B[i]]) ans[j] += (long double) pos[A[i]][j] * pos[B[i]][j] / pos[A[i]][B[i]]; int id = 0; for(i=0; i<n; ++i) if(ans[i] > ans[id]) id = i; cout << id << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...