Submission #1155730

#TimeUsernameProblemLanguageResultExecution timeMemory
1155730dnnndaRobot (JOI21_ho_t4)C++20
0 / 100
148 ms17264 KiB
#include<bits/stdc++.h> using namespace std; #define S second #define F first #define ll long long //#define int long long //#pragma GCC optimize("Ofast, unroll-loop") //#pragma GCC target("avx,avx2") #pragma GCC optimize("O3") const int inf=0x3f3f3f3f; const ll inff=0x3f3f3f3f3f3f3f3f; const int X=1000000007; vector<array<int,3>> adj[100005]; vector<int> cs[100005]; ll len[100005]; priority_queue<pair<ll,int>,vector<pair<ll,int>>,greater<pair<ll,int>>> pq; bool ch(int u, int co){ auto iter=lower_bound(cs[u].begin(),cs[u].end(),co); iter++; if(iter!=cs[u].end()&&*iter==co) return 1; return 0; } signed main(){ ios::sync_with_stdio(0), cin.tie(0); memset(len,0x3f,sizeof len); int n, m; cin >> n >> m; for(int i=1 ; i<=m ; i++){ int a, b, c, p; cin >> a >> b >> c >> p; adj[a].push_back({b,c,p}); adj[b].push_back({a,c,p}); cs[a].push_back(c); cs[b].push_back(c); } for(int i=1 ; i<=n ; i++) sort(cs[i].begin(),cs[i].end()); len[1]=0; pq.push({0,1}); while(!pq.empty()){ auto[l,u]=pq.top(); pq.pop(); if(len[u]<l) continue; for(auto[v,c,p]:adj[u]){ if(l+p*ch(u,c)<len[v]){ len[v]=l+p*ch(u,c); pq.push({len[v],v}); } } } cout << (len[n]==inff ? -1LL : len[n]) << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...