제출 #1165648

#제출 시각아이디문제언어결과실행 시간메모리
1165648SmuggingSpun자매 도시 (APIO20_swap)C++20
13 / 100
72 ms12768 KiB
#include<bits/stdc++.h>
#include "swap.h"
using namespace std;
template<class T>void minimize(T& a, T b){
    if(a > b){
        a = b;
    }
}
template<class T>void maximize(T& a, T b){
    if(a < b){
        a = b;
    }
}
const int lim = 1e5 + 5;
const int INF = 1e9;
bool is_sub1 = true, is_sub2;
int n, m, u[lim << 1], v[lim << 1], w[lim << 1];
vector<int>g[lim];
namespace sub1{
    int max_w;
    void init(){
        if(m == n){
            max_w = *max_element(w, w + m);
        }
    }
}
namespace sub2{
    int third;
    void init(){
        if(n > 3){
            vector<int>p(n - 1);
            iota(p.begin(), p.end(), 1);
            sort(p.begin(), p.end(), [&] (int i, int j){
                return w[g[i][0]] < w[g[j][0]];
            });
            third = p[2];
        }
    }
}
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++){
        g[u[i] = U[i]].emplace_back(i);
        g[v[i] = V[i]].emplace_back(i);
        w[i] = W[i];
    }
    for(int i = 0; i < n; i++){
        if(g[i].size() > 2){
            is_sub1 = false;
            break;
        }
    }
    if(is_sub1){
        sub1::init();
        return;
    }
    if(is_sub2 = (*max_element(u, u + m) == 0 && m == n - 1)){
        sub2::init();
        return;
    }
}
int getMinimumFuelCapacity(int x, int y){
    if(is_sub1){
        return m == n - 1 ? -1 : sub1::max_w;
    }
    if(is_sub2){
        if(x == 0){
            return n < 4 ? -1 : max(w[g[y][0]], w[g[sub2::third][0]]);
        }
        return n < 4 ? -1 : max({w[g[x][0]], w[g[y][0]], w[g[sub2::third][0]]});
    }
}

컴파일 시 표준 에러 (stderr) 메시지

swap.cpp: In function 'int getMinimumFuelCapacity(int, int)':
swap.cpp:73:1: warning: control reaches end of non-void function [-Wreturn-type]
   73 | }
      | ^
#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...