#include <bits/stdc++.h>
//qwerty47924692
using namespace std;
using ll = long long;
const ll N=5e5+29;
const string br="617283";
ll n,m,q,d[N],l[N],r[N],k,c[N],used[N],s[N],t[N],pr[N],sz[N];
vector<pair<ll,ll>>g[N];
vector<pair<ll,ll>>vc;
vector<ll>v[N];
void djikstra(){
priority_queue<pair<ll,ll>>q;
for(ll i=1;i<=n;i++)d[i]=1e18;
for(ll i=1;i<=k;i++){
d[c[i]]=0;
q.push({0,c[i]});
}
while(q.size()){
ll v=q.top().second;
q.pop();
if(used[v])continue;
// cout<<v<<' ';
used[v]=1;
for(auto [to,w]:g[v]){
if(d[to]>d[v]+w){
d[to]=d[v]+w;
q.push({-d[to],to});
}
}
}
}
ll get(ll x){
return (x==pr[x] ? x : pr[x]=get(pr[x]));
}
void uni(ll v,ll u){
v=get(v);
u=get(u);
if(v==u)return;
if(sz[v]<sz[u])swap(v,u);
sz[v]+=sz[u];
pr[u]=v;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
// #ifndef ONLINE_JUDGE
// freopen("input.txt", "r", stdin);
// #endif
cin>>n>>m;
for(ll i=1;i<=m;i++){
ll a,b,w;
cin>>a>>b>>w;
g[a].push_back({b,w});
g[b].push_back({a,w});
}
cin>>k;
for(ll i=1;i<=k;i++)cin>>c[i];
cin>>q;
for(ll i=1;i<=q;i++){
cin>>s[i]>>t[i];
l[i]=0;
r[i]=n-1;
}
djikstra();
for(ll i=1;i<=n;i++){
vc.push_back({d[i],i});
// cout<<i<<' '<<d[i]<<'\n';
// cout<<d[i]<<' ';
}
sort(vc.rbegin(),vc.rend());
// for(auto [a,b]:vc){
// cerr<<a<<' '<<b<<'\n';
// }
for(ll i=1;i<20;i++){
for(ll i=0;i<=n-1;i++)v[i].clear();
for(ll i=1;i<=n;i++){
used[i]=0;
pr[i]=i;
sz[i]=1;
}
for(ll i=1;i<=q;i++){
ll md=(l[i]+r[i])>>1;
v[md].push_back(i);
}
ll ii= 0;
for(auto [x,i]:vc){
used[i]=1;
for(auto [to,w]:g[i]){
if(used[to])uni(i,to);
}
for(ll j:v[ii]){
if(get(s[j])==get(t[j])){
// if(j==1)cout<<ii<<' ';
r[j]=ii;
}
else l[j]=ii+1;
}
ii++;
}
}
for(ll i=1;i<=q;i++){
cout<<vc[l[i]].first<<'\n';
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |