Submission #676472

#TimeUsernameProblemLanguageResultExecution timeMemory
676472penguin133Hotspot (NOI17_hotspot)C++17
100 / 100
374 ms1648 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pi pair<int, int>
#define pii pair<int, pair<int, int> > 
#define fi first
#define se second
int n,m,q;
vector<int>v[5005];
long double ans[5005], cnt[5005];
int vis[5005];
pi dist[5005];
void solve(){
	cin >> n >> m;
	while(m--){
		int x,y; cin >> x >> y;
		v[x].push_back(y);
		v[y].push_back(x);
	}
	queue<int>qu;
	cin >> q;
	while(q--){
		int x, y; cin >> x >> y;
		qu.push(x);
		for(int i=0;i<=n;i++)dist[i] = {1e18, 0}, vis[i] = 0;
		dist[x] = {0, 1};
		for(int i=0;i<=n;i++)cnt[i] = 0;
		while(!qu.empty()){
			int bru = qu.front(); qu.pop();
			//cout << bru << '\n';
			for(auto i : v[bru]){
				if(dist[i].fi > dist[bru].fi + 1)dist[i] = dist[bru], dist[i].fi++, qu.push(i);
				else if(dist[i].fi == dist[bru].fi + 1)dist[i].se += dist[bru].se;
			}
		}
		//cerr << dist[y].se << '\n';
		int cur = dist[y].se;
		assert(cur != 0);
		cnt[y] = 1.0L;
		qu.push(y);
		while(!qu.empty()){
			int bt = qu.front(); qu.pop();
			if(vis[bt])continue;
			vis[bt] = 1;
			ans[bt] += cnt[bt];
			for(auto i : v[bt]){
				if(dist[i].fi == dist[bt].fi - 1){
					qu.push(i);
					cnt[i] += (long double)((long double)dist[i].se/(long double)dist[bt].se * cnt[bt]);
				}
			}
		}
	}
	long double fin = 0.0;
	int in = 0;
	for(int i=0;i<=n;i++)if(fin < ans[i])fin = ans[i], in = i;
	//for(int i=0;i<n;i++)cout << ans[i] << " ";
	//cout << '\n';
	cout << in << '\n';
}
 
main(){
	ios::sync_with_stdio(0);cin.tie(0);
	int t = 1;
	//cin >> t;
	while(t--){
		solve();
	}
}

Compilation message (stderr)

hotspot.cpp:62:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   62 | main(){
      | ^~~~
#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...