Submission #981938

#TimeUsernameProblemLanguageResultExecution timeMemory
981938AbitoSwapping Cities (APIO20_swap)C++17
0 / 100
2060 ms57180 KiB
#include "swap.h" #include <bits/stdc++.h> #define F first #define S second #define ep insert #define pb push_back using namespace std; const int NN=1e3+5; int n,m,dis[5][NN][NN],q; vector<pair<int,int>> adj[NN]; bool vis[5][NN][NN]; void dijkstra(int X,int Y){ dis[q][X][Y]=0; priority_queue<vector<int>> pq; pq.push({0,X,Y}); while (!pq.empty()){ int i=pq.top()[1],j=pq.top()[2]; pq.pop(); if (vis[q][i][j]) continue; vis[q][i][j]=1; for (auto u:adj[i]){ if (u.F==j) continue; int d=max(dis[q][i][j],u.S); if (d<dis[q][u.F][j] || dis[q][u.F][j]<0){ dis[q][u.F][j]=d; pq.push({-d,u.F,j}); } } for (auto u:adj[j]){ if (u.F==i) continue; int d=max(dis[q][i][j],u.S); if (d<dis[q][i][u.F] || dis[q][i][u.F]<0){ dis[q][i][u.F]=d; pq.push({-d,i,u.F}); } } }return; } void init(int N, int M, vector<int> U, vector<int> V, vector<int> W) { n=N,m=M; for (int i=0;i<m;i++){ adj[U[i]].pb({V[i],W[i]}); adj[V[i]].pb({U[i],W[i]}); } memset(dis,-1,sizeof(dis)); return; } int getMinimumFuelCapacity(int X, int Y) { dijkstra(X,Y); /*for (int i=0;i<n;i++){ for (int j=0;j<n;j++){ cout<<dis[i][j]<<' '; }cout<<endl; }*/ return dis[q++][Y][X]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...