Submission #923071

#TimeUsernameProblemLanguageResultExecution timeMemory
923071pccHotspot (NOI17_hotspot)C++14
100 / 100
588 ms1388 KiB
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC taget("avx2,popcnt")

#define ll long long
#define pll pair<ll,ll>
#define pii pair<int,int>
#define fs first
#define sc second
#define tlll tuple<ll,ll,ll>
#define ld long double

const int mxn = 5050;
int N,M;
vector<int> paths[mxn];
long double dp[mxn];

struct BFS_GRAPH{
	int s;
	int c[mxn],d[mxn];
	void set_s(int ss = 0){
		s = ss;
	}
	void GO(){
		memset(c,0,sizeof(c));
		memset(d,-1,sizeof(d));
		queue<int> q;
		c[s] = 1;d[s] = 0;
		q.push(s);
		while(!q.empty()){
			auto now = q.front();
			q.pop();
			for(auto nxt:paths[now]){
				if(d[nxt] == -1){
					d[nxt] = d[now]+1;
					q.push(nxt);
				}
				if(d[nxt] == d[now]+1)c[nxt] += c[now];
			}
		}
		return;
	}
};

int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>N>>M;
	for(int i = 0;i<M;i++){
		int a,b;
		cin>>a>>b;
		paths[a].push_back(b);
		paths[b].push_back(a);
	}
	int Q;
	cin>>Q;
	while(Q--){
		int s,e;
		cin>>s>>e;
		BFS_GRAPH g,rg;
		g.s = s,rg.s = e;
		g.GO();rg.GO();
		int total = g.c[e];
		for(int i = 0;i<N;i++){
			if(g.d[i]+rg.d[i] != g.d[e])continue;
			dp[i] += g.c[i]*rg.c[i]/(ld)total;
		}
	}
	cout<<max_element(dp,dp+N)-dp;
}

Compilation message (stderr)

hotspot.cpp:4: warning: ignoring '#pragma GCC taget' [-Wunknown-pragmas]
    4 | #pragma GCC taget("avx2,popcnt")
      |
#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...