Submission #307052

#TimeUsernameProblemLanguageResultExecution timeMemory
307052VEGAnnStations (IOI20_stations)C++14
100 / 100
1101 ms1296 KiB
#include "stations.h"
#include <bits/stdc++.h>
#define PB push_back
#define sz(x) ((int)x.size())
#define all(x) x.begin(),x.end()
using namespace std;
vector<int> g[1000];
int tin[1000], tout[1000], tt = 0, ht[1000];

void dfs(int v, int p, bool tp){
    tin[v] = tt;

    if (!tp) tt++;

    ht[v] = tp;

    for (int u : g[v]){
        if (u == p) continue;
        dfs(u, v, tp ^ 1);
    }

    tout[v] = tt;

    if (tp) tt++;
}

std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
    for (int i = 0; i < n; i++)
        g[i].clear();

    tt = 0;

    for (int i = 0; i < sz(u); i++){
        g[u[i]].PB(v[i]);
        g[v[i]].PB(u[i]);
    }

    dfs(0, -1, 0);

    vector<int> labels;

    labels.resize(n);

    for (int i = 0; i < n; i++) {
        if (ht[i] == 0)
            labels[i] = tin[i];
        else labels[i] = tout[i];
    }

	return labels;
}

int find_next_station(int s, int t, std::vector<int> c) {
    int ss = s;

    int tt = t;

    if (c.back() > s){
        if (ss > tt) return c.back();

        int siz = sz(c);

        int lst = c.back();

        if (s > 0) {
            if (sz(c) > 1)
                lst = c[siz - 2];
            else lst = -1;
        }

        if (tt <= lst){
            for (int v : c)
                if (tt <= v)
                    return v;
        } else return c.back();
    } else {
        if (ss < tt) return c[0];

        if (sz(c) > 1 && tt >= c[1]){
            reverse(all(c));

            for (int v : c)
                if (tt >= v)
                    return v;
        } else return c[0];
    }
}

Compilation message (stderr)

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