#include #include using namespace std; using ll = long long;//63bit型整数型 // モッドを使った累乗 int main(){ //B以上は基本詳細を書いておくと便利 A = ooの値とか 見直す時に便利 // この問題の本質 ll N,M; cin >> N >> M; vector>graph(N,vector(0)); for(ll i = 0;i> u >> v; u--; v--; graph[u].push_back(v); graph[v].push_back(u); } ll L; cin >> L; vectorpass(N,-1); for(ll i = 0;i> J >> K; J--; pass[J] = max(pass[J],K); } priority_queue>pq; for(ll i = 0;ians(N,inf); vectorvisited(N); queue>BFS; if(pass[0] == -1)BFS.push({0,0}); while(true){ if(BFS.empty())break; ll point = BFS.front().first; ll count = BFS.front().second; ans[point] = min(ans[point],count); BFS.pop(); visited[point] = true; for(ll i = 0;i