Submission #672946

#TimeUsernameProblemLanguageResultExecution timeMemory
672946vuavisaoHotspot (NOI17_hotspot)C++14
100 / 100
843 ms1260 KiB
#include<bits/stdc++.h> #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #define ll long long #define ld long double using namespace std; template<typename Lhs, typename Rhs> inline bool Max_self(Lhs &a, Rhs b) { if(b > a) { a = b; return true; } return false; } template<typename Lhs, typename Rhs> inline bool Min_self(Lhs &a, Rhs b) { if(b < a) { a = b; return true; } return false; } const int N = 5e3 + 10; const int INF = 1e9; int n, m, q; vector<int> g[N]; int dist[2][N]; ld cnt[2][N]; ld res[N]; void Dijkstra(int u, int* dist, ld* cnt); void Dijkstra(int u, int* dist, ld* cnt) { for(int i = 1; i <= n; ++ i) { dist[i] = INF; cnt[i] = 0; } dist[u] = 0; cnt[u] = 1; queue<int> q = {}; q.push(u); while(!q.empty()) { int u = q.front(); q.pop(); for(const auto& v : g[u]) { if(Min_self(dist[v], dist[u] + 1)) { cnt[v] = cnt[u]; q.push(v); } else if(dist[v] == dist[u] + 1) { cnt[v] += cnt[u]; } } } } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if (fopen("NOI17_hotspot.inp", "r")) { freopen("NOI17_hotspot.inp", "r", stdin); freopen("NOI17_hotspot.out", "w", stdout); } cin >> n >> m; for(int i = 1; i <= m; ++ i) { int u, v; cin >> u >> v; ++ u; ++ v; g[u].push_back(v); g[v].push_back(u); } cin >> q; while(q--) { int u, v; cin >> u >> v; ++ u; ++ v; Dijkstra(u, dist[0], cnt[0]); Dijkstra(v, dist[1], cnt[1]); for(int i = 1; i <= n; ++ i) { // cout << dist[0][i] << ' ' << dist[1][i] << '\n'; if(dist[0][i] + dist[1][i] == dist[0][v]) { res[i] += cnt[0][i] * cnt[1][i] / cnt[0][v]; } } } cout << max_element(res + 1, res + 1 + n) - res - 1; return 0; } /// Code by vuavisao

Compilation message (stderr)

hotspot.cpp: In function 'int32_t main()':
hotspot.cpp:49:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   49 |         freopen("NOI17_hotspot.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hotspot.cpp:50:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   50 |         freopen("NOI17_hotspot.out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...