Submission #1195164

#TimeUsernameProblemLanguageResultExecution timeMemory
1195164NonbangkokCommuter Pass (JOI18_commuter_pass)C++20
15 / 100
244 ms17956 KiB
#include <bits/stdc++.h> #define coutf(n, m) cout << fixed << setprecision(n) << m #define forr(i, a, n) for (int i = a; i < n; i++) #define forl(i, a, n) for (int i = a; i > n; i--) #define macos ios::sync_with_stdio(0);cin.tie(0);cout.tie(0) #define endll "\n" #define sp " " typedef long long ll; using namespace std; struct Non{ int v; ll w; bool operator < (const Non &rhs)const{ if(w!=rhs.w)return w>rhs.w; return v>rhs.v; } }; const int N = 1e5 + 10; int n,m,x,y,st,des,a,b; int p[N]; ll dis[3][N],c,ans,ans1=1e18,ans2=1e18; vector<pair<int,ll>> adj[N]; priority_queue<Non> q; void dijkstra(int z, int s){ forr(i,1,n+1)dis[s][i] = 1e18; q.push({z,dis[s][z]=0LL}); while(!q.empty()){ int u = q.top().v; q.pop(); for(auto [v,w]:adj[u]){ if(dis[s][v]>dis[s][u]+w){ q.push({v,dis[s][v]=dis[s][u]+w}); if(!s)p[v] = u; } } } } int main(){macos; cin >> n >> m >> x >> y >> st >> des; forr(i,1,n+1)p[i] = i; forr(i,0,m){ cin >> a >> b >> c; adj[a].push_back({b,c}); adj[b].push_back({a,c}); } dijkstra(x,0); dijkstra(st,1); dijkstra(des,2); for(int u=y;u!=p[u];u=p[u])ans1 = min(ans1,dis[1][u]),ans2 = min(ans2,dis[2][u]); ans1 = min(ans1,dis[1][x]),ans2 = min(ans2,dis[2][x]); cout << min(dis[1][des],ans1+ans2); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...