結果
問題 |
No.1382 Travel in Mitaru city
|
ユーザー |
![]() |
提出日時 | 2021-02-25 17:18:20 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,038 bytes |
コンパイル時間 | 1,473 ms |
コンパイル使用メモリ | 170,068 KB |
実行使用メモリ | 209,916 KB |
最終ジャッジ日時 | 2024-10-01 07:41:35 |
合計ジャッジ時間 | 7,434 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 3 TLE * 1 -- * 64 |
ソースコード
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pll; typedef pair<pll,ll> P; int main(){ const ll INF=1000000000; ll i,n,m,s,t; cin >> n >> m >> s >> t; s--,t--; vector<ll> p(n); for(i=0;i<n;i++){ cin >> p[i]; } vector<vector<ll> > g(n); for(i=0;i<m;i++){ ll a,b; cin >> a >> b; a--,b--; g[a].push_back(b); g[b].push_back(a); } vector<ll> ds(n,-INF),ns(n,0); ds[s]=0,ns[s]=1; priority_queue<P> que; que.push(P(pll(p[s],0),s)); while(!que.empty()){ P p1=que.top(); que.pop(); ll u=p1.first.first,v=p1.first.second; ll r=p1.second; if(ds[r]!=v){ continue; } for(i=0;i<g[r].size();i++){ ll us=g[r][i]; if(u>p[us]){ if(ds[us]<ds[r]+1){ ds[us]=ds[r]+1; que.push(P(pll(p[us],ds[us]),us)); } } else{ if(ds[us]<ds[r]){ ds[us]=ds[r]; que.push(P(pll(u,ds[us]),us)); } } } ns[r]=1; } cout << ds[t] << endl; }