이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
//Euzibillahiminesseytanirracim Bismillahirrahmanirrahim
/*
ID:
TASK:
LANG: C++
*/
#include <bits/stdc++.h>
#define pb push_back
#define ll long long
#define ff first
#define ss second
#define mp make_pair
#define PII pair<int,int>
#define inf 100000000001
using namespace std;
ll n, m, x, y, z, k, mx, t, d[100001], kd[100001], a[100001], p; 
vector<pair<ll,ll>> v[100001];
priority_queue<pair<ll,ll>> q;
queue<ll>qq;
void dfs(int h, int md, int f){
	
	if(h == f){
		
		p = 1;
		kd[h] = 0;
		return;
		
	}
	
	for(auto s:v[h]){
		
		if(kd[s.ff] == 1 || d[s.ff] < md) continue;
		
		kd[s.ff] = 1;
		
		dfs(s.ff , md , f);
		
		if(p == 1){
			
			kd[h] = 0;
			return;
			
		}
		
	}
	
	kd[h] = 0;
	
}
int main()
{
	
	cin>>n>>m;
	
	for(int i=1;i<=m;i++){
		
		cin>>x>>y>>z;
		
		v[x].pb({y,z});
		v[y].pb({x,z});
		
	}
	
	for(int i=1;i<=n;i++) d[i] = inf;
	
	cin>>k;
	
	for(int i=1;i<=k;i++){
		
		cin>>a[i];
		
		d[a[i]] = 0;
		
		q.push({0,a[i]});
		
	}
	
	while(!q.empty()){
		
		ll b = q.top().ss;
		q.pop();
		
		if(kd[b] == 1) continue;
		
		kd[b] = 1;
		
		for(auto s:v[b]){
			
			if(d[s.ff] > d[b] + s.ss){
				
				d[s.ff] = d[b] + s.ss;
				
				q.push({-s.ss , s.ff});
				
			}
			
		}
		
	}
	
	for(int i=1;i<=n;i++) kd[i] = 0;
	
	cin>>t;
	
	while(t--){
		
		ll l, r;
	
		cin>>x>>y;
		
		kd[x] = 1;
		
		l = 1;
		r = d[x];
				
		while(l <= r){
			
			int mid = (l + r) / 2;
			
			p = 0;
			
			dfs(x , mid , y);
			
			if(p == 1) l = mid + 1;
			else r = mid - 1;
			
		}
		
		kd[x] = 0;
		
		cout<<l - 1<<"\n";
		
	}
	
}
/*
_________oBBBBB8o   oBBBBBBB8
_____o8BBBBBBBBBBB  BBBBBBBBB8        o88o
___o8BBBBBB**8BBBB  BBBBBBBBBB     oBBBBBBBo
__oBBBBBBB*   ***   BBBBBBBBBB     BBBBBBBBBBo
_8BBBBBBBBBBooooo   *BBBBBBB8      *BB* 8BBBBBBo
_8BBBBBBBBBBBBBBBB8ooBBBBBBB8           8BBBBBBB8
__*BBBBBBBBBBBBBBBBBBBBBBBBBB8 o88BB88BBBBBBBBBBBB
____*BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB8
______**8BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB*
___________*BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB8*
____________*BBBBBBBBBBBBBBBBBBBBBBBB8888**
_____________BBBBBBBBBBBBBBBBBBBBBBB*
_____________*BBBBBBBBBBBBBBBBBBBBB*
______________*BBBBBBBBBBBBBBBBBB8
_______________*BBBBBBBBBBBBBBBB*
________________8BBBBBBBBBBBBBBB8
_________________8BBBBBBBBBBBBBBBo
__________________BBBBBBBBBBBBBBB8
__________________BBBBBBBBBBBBBBBB
__________________8BBBBBBBBBBBBBBB8
__________________*BBBBBBBBBBBBBBBB
__________________8BBBBBBBBBBBBBBBB8
_________________oBBBBBBBBBBBBBBBBBB
________________oBBBBBBBBBBBBBBBBBBB
________________BBBBBBBBBBBBBBBBBBBB
_______________8BBBBBBBBBBBBBBBBBBB8
______________oBBBBBBBBB88BBBBBBBBB8
______________8BBBBBBBBB*8BBBBBBBBB*
______________BBBBBBBBB* BBBBBBBBB8
______________BBBBBBBB8 oBBBBBBBBB*
______________8BBBBBBB  oBBBBBBBB*
______________BBBBBBB*  8BBBBBBB*
_____________8BBBBBB*   BBBBBBB*
____________8BBBBBB8   oBBBBBB8
___________8BBBBBB8    8BBBBBB*
__________oBBBBBB8    BBBBBBB8
__________BBBBBBB8   BBBBBBBB*
_________oBBBBBBB8   BBBBBBBB
_________8BBBBBB8    BBBBBBB*
_________BBBBBB*     8BBBBB*
________oBBBB8       BBBBB*
________oBBB8        BBBB*
________BBBB8       8BBBBo
_______8BBBB*      oBBBBBBo
______8BBBB*       *BBBBBBBB8o
______BBBBB*            *88BBBo
*/
| # | 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... |