제출 #1339352

#제출 시각아이디문제언어결과실행 시간메모리
1339352hccoderLongest Trip (IOI23_longesttrip)C++20
40 / 100
390 ms764 KiB
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
using namespace std;
using ll = long long;
const ll inf = 1e18;

bool are_connected(vector<int> A, vector<int> B);

pair<int, int> diam(vector<vector<int>>& g){
    int n = g.size();
    int maxa = 0;
    int ans = 0;
    for (int i = 0; i<n; i++){
        vector<int> vis(n);
        auto dfs = [&] (auto&& self, int u, int dist) -> void {
            if (dist>maxa){
                maxa = dist;
                ans = i;
            }
            vis[u] = 1;
            for (int e: g[u]){
                if (!vis[e]) {
                    self(self, e, dist+1);
                }
            }
        };
        dfs(dfs, i, 0);
    }
    return {ans, maxa};
}

vector<int> path(vector<vector<int>>& g, int x, int maxa){
    vector<int> p;
    bool found = false;
    vector<int> vis(g.size());
    auto dfs = [&] (auto&& self, int u, int dist) -> void {
        if (found) return;
        p.push_back(u);
        vis[u] = 1;
        if (dist==maxa){
            found = true;
            return;
        }
        for (int e: g[u]){
            if (!vis[e]){
                self(self, e, dist+1);
            }
        }
        if (!found) p.pop_back();
    };
    dfs(dfs, x, 0);
    return p;
}

vector<int> longest_trip(int N, int D) {
    if (D>=1){
        vector<vector<int>> g(N+1);
        for (int i = 0; i<N; i++){
            for (int j = i+1; j<N; j++){
                if (are_connected({i}, {j})) {
                    g[i].push_back(j);
                    g[j].push_back(i);
                }
            }
        }
        auto [s, len] = diam(g);
        vector<int> p = path(g, s, len);
        return p;
    }
}

// int main(){
//     int x = max_score(4, 0, 3, 20, {0, 1, 2}, {1, 2, 3}, {18, 1, 19});
//     cout<<x;

// }

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

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