제출 #1217247

#제출 시각아이디문제언어결과실행 시간메모리
1217247cpdreamer기지국 (IOI20_stations)C++20
0 / 100
302 ms512 KiB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e17;
typedef long long ll;
const ll MOD = (ll)1e9+7;
#define P pair
#define S second
#define F first
#define pb push_back
#define V vector
#define all(v) v.begin(), v.end()
V<int>adj[(int)8];
V<P<int,int>>vp(8);
int cnt=0;
void dfs(int n,int p) {
    vp[n].F=cnt;
    for (auto u:adj[n]) {
        if(u==p)continue;
        cnt++;
        dfs(u,n);
    }
    vp[n].S=cnt;
}
std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
    for (int i=0;i<n-1;i++) {
        adj[u[i]].pb(v[i]);
        adj[v[i]].pb(u[i]);
    }
    dfs(0,-1);
    V<int>l(n);
    for (int i=0;i<n;i++) {
        l[i]=8*vp[i].F+vp[i].S;
    }
    for (int i=0;i<n;i++) {
        adj[i].clear();
    }
    return l;
}
bool check(int x,int y) {
    int r=x%8;
    int l=(x-r)/8;
    int n=(y-y%8)/8;
    return (n>=l && n<=r);
}
int find_next_station(int s, int t, std::vector<int> c) {
    for (int i=1;i<(int)c.size();i++) {
        if (check(c[i],t)) {
            return c[i];
        }
    }
    return c[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...
#Verdict Execution timeMemoryGrader output
Fetching results...