Submission #905774


Source Code Expand

#include <cstdio>
#include <vector>
using namespace std;

const int N = 200500;

vector<int> E[N];
vector<int> F[N];

const int LGN = 18;
int up[LGN][N];
int D[N];

void DFS(int x, int p = -1) {
    D[x] = (p == -1) ? 0 : D[p] + 1;
    up[0][x] = (p == -1) ? x : p;
    for (int d = 1; d < LGN; d++)
        up[d][x] = up[d - 1][up[d - 1][x]];
    for (int y : E[x]) {
        if (y != p)
            DFS(y, x);
    }
}

inline int lca(int a, int b) {
    if (D[a] > D[b]) {
        swap(a, b);
    }
    for (int d = LGN - 1; d >= 0; d--)
        if (D[up[d][b]] >= D[a])
            b = up[d][b];
    if (a == b)
        return a;
    for (int d = LGN - 1; d >= 0; d--)
        if (up[d][a] != up[d][b])
            a = up[d][a], b = up[d][b];
    return up[0][a];
}

inline int dist(int a, int b) {
    int l = lca(a, b);
    return D[a] + D[b] - 2 * D[l];
}

bool infinite(int x) {
    for (int y : F[x]) {
        if (dist(x, y) >= 3)
            return true;
    }
    return false;
}

bool isinfinite = false;
int best = 0;

int s, t;


void DFS2(int x, int p = -1, int d = 0) {
    best = max(best, dist(t, x));
    if (infinite(x)) {
        isinfinite = true;
        return;
    }
    for (int y : F[x]) {
        if (y == p)
            continue;
        if (d + 1 < dist(t, y)) {
            DFS2(y, x, d + 1);
            if (isinfinite)
                return;
        }
    }
}

int main() {
    int n;
    scanf("%d %d %d", &n, &s, &t);
    --s, --t;
    for (int i = 0; i < n - 1; i++) {
        int a, b;
        scanf("%d %d", &a, &b);
        --a, --b;
        F[a].push_back(b);
        F[b].push_back(a);
    }
    for (int i = 0; i < n - 1; i++) {
        int a, b;
        scanf("%d %d", &a, &b);
        --a, --b;
        E[a].push_back(b);
        E[b].push_back(a);
    }
    DFS(0);
    DFS2(s);
    if (isinfinite) {
        printf("%d\n", -1);
    } else {
        printf("%d\n", 2 * best);
    }
}

Submission Info

Submission Time
Task E - Sugigma: The Showdown
User Zlobober
Language C++14 (GCC 5.4.1)
Score 1400
Code Size 2031 Byte
Status AC
Exec Time 540 ms
Memory 45952 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:78:34: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d %d", &n, &s, &t);
                                  ^
./Main.cpp:82:31: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d", &a, &b);
                               ^
./Main.cpp:89:31: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d", &a, &b);
                               ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1400 / 1400
Status
AC × 5
AC × 103
Set Name Test Cases
Sample example0, example1, example2, example3, example4
All doublestar0, doublestar1, doublestar2, doublestar3, doublestar4, doublestar5, doublestar6, doublestar7, example0, example1, example2, example3, example4, giri0, giri1, giri2, giri3, giri4, giri5, giri6, giri7, giri8, giri9, maxrand0, maxrand1, maxrand2, maxrand3, maxrand4, maxrand5, maxrand6, maxrand7, maxrand8, maxrand9, narashi0, narashi1, narashi2, narashi3, narashi4, narashi5, narashi6, narashi7, narashi8, narashi9, ok0, ok1, ok2, ok3, ok4, ok5, ok6, ok7, ok8, ok9, ouh0, ouh1, ouh2, ouh3, ouh4, ouh5, ouh6, ouh7, ouh8, ouh9, same0, same1, same2, same3, same4, same5, same6, same7, same8, same9, sameline0, sameline1, sameline2, sameline3, sameline4, sameline5, sameline6, sameline7, sameline8, sameline9, star0, star1, star2, star3, star4, star5, star6, star7, star8, star9, supersmall0, supersmall1, supersmall2, supersmall3, supersmall4, supersmall5, supersmall6, supersmall7, supersmall8, supersmall9
Case Name Status Exec Time Memory
doublestar0 AC 203 ms 36984 KB
doublestar1 AC 190 ms 35704 KB
doublestar2 AC 191 ms 36600 KB
doublestar3 AC 183 ms 35448 KB
doublestar4 AC 201 ms 37496 KB
doublestar5 AC 207 ms 37624 KB
doublestar6 AC 178 ms 35448 KB
doublestar7 AC 182 ms 35704 KB
example0 AC 12 ms 9728 KB
example1 AC 12 ms 9728 KB
example2 AC 12 ms 9728 KB
example3 AC 12 ms 9728 KB
example4 AC 12 ms 9728 KB
giri0 AC 261 ms 37888 KB
giri1 AC 359 ms 36352 KB
giri2 AC 271 ms 36736 KB
giri3 AC 364 ms 36480 KB
giri4 AC 383 ms 36480 KB
giri5 AC 380 ms 37376 KB
giri6 AC 390 ms 37248 KB
giri7 AC 407 ms 36864 KB
giri8 AC 284 ms 36864 KB
giri9 AC 292 ms 37120 KB
maxrand0 AC 226 ms 37376 KB
maxrand1 AC 224 ms 36992 KB
maxrand2 AC 227 ms 37504 KB
maxrand3 AC 220 ms 36736 KB
maxrand4 AC 215 ms 36224 KB
maxrand5 AC 218 ms 36352 KB
maxrand6 AC 216 ms 36352 KB
maxrand7 AC 219 ms 36992 KB
maxrand8 AC 210 ms 36224 KB
maxrand9 AC 225 ms 36992 KB
narashi0 AC 347 ms 35968 KB
narashi1 AC 342 ms 36096 KB
narashi2 AC 331 ms 36224 KB
narashi3 AC 332 ms 36736 KB
narashi4 AC 351 ms 36992 KB
narashi5 AC 337 ms 36864 KB
narashi6 AC 347 ms 36608 KB
narashi7 AC 338 ms 37376 KB
narashi8 AC 353 ms 37248 KB
narashi9 AC 353 ms 36352 KB
ok0 AC 342 ms 42364 KB
ok1 AC 375 ms 44156 KB
ok2 AC 367 ms 40316 KB
ok3 AC 367 ms 41596 KB
ok4 AC 255 ms 38912 KB
ok5 AC 332 ms 40572 KB
ok6 AC 317 ms 40956 KB
ok7 AC 283 ms 39168 KB
ok8 AC 368 ms 42108 KB
ok9 AC 344 ms 40444 KB
ouh0 AC 265 ms 37504 KB
ouh1 AC 268 ms 38656 KB
ouh2 AC 293 ms 37376 KB
ouh3 AC 301 ms 39424 KB
ouh4 AC 323 ms 38912 KB
ouh5 AC 324 ms 39420 KB
ouh6 AC 346 ms 41340 KB
ouh7 AC 278 ms 37632 KB
ouh8 AC 364 ms 39676 KB
ouh9 AC 348 ms 41084 KB
same0 AC 400 ms 36992 KB
same1 AC 412 ms 36608 KB
same2 AC 259 ms 37376 KB
same3 AC 270 ms 37376 KB
same4 AC 251 ms 36224 KB
same5 AC 430 ms 36352 KB
same6 AC 260 ms 36736 KB
same7 AC 396 ms 36352 KB
same8 AC 220 ms 36096 KB
same9 AC 435 ms 37248 KB
sameline0 AC 409 ms 43520 KB
sameline1 AC 540 ms 44800 KB
sameline2 AC 341 ms 45056 KB
sameline3 AC 429 ms 42112 KB
sameline4 AC 312 ms 43392 KB
sameline5 AC 455 ms 43136 KB
sameline6 AC 326 ms 41728 KB
sameline7 AC 425 ms 44288 KB
sameline8 AC 348 ms 43904 KB
sameline9 AC 376 ms 45952 KB
star0 AC 235 ms 37620 KB
star1 AC 265 ms 37492 KB
star2 AC 136 ms 37620 KB
star3 AC 250 ms 37492 KB
star4 AC 235 ms 37748 KB
star5 AC 372 ms 38004 KB
star6 AC 148 ms 38004 KB
star7 AC 252 ms 37748 KB
star8 AC 309 ms 37492 KB
star9 AC 296 ms 38388 KB
supersmall0 AC 12 ms 9728 KB
supersmall1 AC 12 ms 9728 KB
supersmall2 AC 12 ms 9728 KB
supersmall3 AC 12 ms 9728 KB
supersmall4 AC 12 ms 9728 KB
supersmall5 AC 12 ms 9728 KB
supersmall6 AC 12 ms 9856 KB
supersmall7 AC 12 ms 9728 KB
supersmall8 AC 12 ms 9728 KB
supersmall9 AC 12 ms 9728 KB