Submission #981938

#TimeUsernameProblemLanguageResultExecution timeMemory
981938Abito자매 도시 (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...