답안 #782993

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
782993 2023-07-14T13:48:34 Z JoenPoenMan 길고양이 (JOI20_stray) C++17
15 / 100
53 ms 18712 KB

#include "Anthony.h"
#include <bits/stdc++.h>
using namespace std;

typedef pair<int, int> ii;


std::vector<int> Mark(int N, int M, int A, int B,
                      std::vector<int> U, std::vector<int> V)
{
    vector<vector<ii>> ADJ(N);
    map<ii, int> paths;
    vector<bool> filled(M, false);
    for (int i = 0; i < M; i++) {
        ADJ[U[i]].push_back({V[i], i});
        ADJ[V[i]].push_back({U[i], i});
        paths[{U[i], V[i]}] = i;
        paths[{V[i], U[i]}] = i;
    }

    std::vector<int> X(M);
    priority_queue<ii, vector<ii>, greater<ii>> q;
    vector<int> prevNode(N, -1);
    vector<int> shortest(N, 1e8);
    shortest[0] = 0;
    q.push({0,0});
    while (!q.empty()) {
        auto [dis, pos] = q.top();
        q.pop();
        if (dis != shortest[pos]) continue;
        for (auto [conn, _] : ADJ[pos]) {
            if (dis+1 < shortest[conn]) {
                shortest[conn] = dis+1;
                prevNode[conn] = pos;
                q.push({dis+1, conn});
            }
        }
    }
    for (int p = 1; p < N; p++) {
        X[paths[{p, prevNode[p]}]] = shortest[p]%(A==2?2:3);
        filled[paths[{p, prevNode[p]}]] = true;
    }
    for (int i = 0; i < M; i++) if (!filled[i]) {
        X[i] = (min(shortest[U[i]], shortest[V[i]])+1)%(A==2?2:3);
    }
    return X;
    
}

    #include "Catherine.h"
    #include <bits/stdc++.h>
    using namespace std;

    namespace
    {

        int A, B;
        int prevA = 0;
        bool onPath = false;
        bool first = true;

    } // namespace

    void Init(int A, int B)
    {
        ::A = A;
        ::B = B;
    }

    int Move(std::vector<int> y)
    {
        if (A==2) {
            if (!::onPath) {
                if (y[0]==0 ^ y[1]==0) {
                    if (::first) {
                        ::onPath = true;
                        ::prevA = (y[0]?0:1);
                        return y[0]?0:1;
                    } else {
                        ::prevA = !::prevA;
                        return ::prevA;
                    }
                }
                if (y[0]==1 && y[1]==1) {
                    return 0;
                } 
                if (y[0]==0 && y[1]==0) {
                    return -1;
                }
                ::prevA = ((y[0]==1)?0:1);
            } else {
                ::prevA = !::prevA;
                return ::prevA;
            }
        } else {
            first = false;
            int corr = -1;
            for (int p = 0 ; p < y.size(); p++) if (y[p] && (corr==-1 || (corr==0&&p==2))) corr = p;
            return corr;
        }
    }

Compilation message

Catherine.cpp: In function 'int Move(std::vector<int>)':
Catherine.cpp:27:25: warning: suggest parentheses around comparison in operand of '^' [-Wparentheses]
   27 |                 if (y[0]==0 ^ y[1]==0) {
Catherine.cpp:51:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |             for (int p = 0 ; p < y.size(); p++) if (y[p] && (corr==-1 || (corr==0&&p==2))) corr = p;
      |                              ~~^~~~~~~~~~
Catherine.cpp:43:25: warning: control reaches end of non-void function [-Wreturn-type]
   43 |                 ::prevA = ((y[0]==1)?0:1);
      |                 ~~~~~~~~^~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 49 ms 17556 KB Output is correct
2 Correct 1 ms 516 KB Output is correct
3 Correct 51 ms 17308 KB Output is correct
4 Correct 50 ms 18712 KB Output is correct
5 Correct 48 ms 18708 KB Output is correct
6 Correct 47 ms 17332 KB Output is correct
7 Correct 49 ms 17468 KB Output is correct
8 Correct 53 ms 18116 KB Output is correct
9 Correct 47 ms 18068 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 49 ms 17556 KB Output is correct
2 Correct 1 ms 516 KB Output is correct
3 Correct 51 ms 17308 KB Output is correct
4 Correct 50 ms 18712 KB Output is correct
5 Correct 48 ms 18708 KB Output is correct
6 Correct 47 ms 17332 KB Output is correct
7 Correct 49 ms 17468 KB Output is correct
8 Correct 53 ms 18116 KB Output is correct
9 Correct 47 ms 18068 KB Output is correct
10 Correct 43 ms 15492 KB Output is correct
11 Correct 41 ms 15532 KB Output is correct
12 Correct 44 ms 15440 KB Output is correct
13 Correct 41 ms 15572 KB Output is correct
14 Correct 43 ms 15756 KB Output is correct
15 Correct 44 ms 16076 KB Output is correct
16 Correct 44 ms 18280 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 41 ms 15212 KB Output is correct
2 Correct 1 ms 508 KB Output is correct
3 Correct 37 ms 15012 KB Output is correct
4 Correct 47 ms 16560 KB Output is correct
5 Correct 46 ms 16568 KB Output is correct
6 Correct 42 ms 15256 KB Output is correct
7 Correct 43 ms 15316 KB Output is correct
8 Correct 46 ms 15828 KB Output is correct
9 Correct 53 ms 15748 KB Output is correct
10 Correct 44 ms 15616 KB Output is correct
11 Correct 44 ms 15572 KB Output is correct
12 Correct 46 ms 15680 KB Output is correct
13 Correct 43 ms 15508 KB Output is correct
14 Correct 52 ms 15784 KB Output is correct
15 Correct 53 ms 15900 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 41 ms 15212 KB Output is correct
2 Correct 1 ms 508 KB Output is correct
3 Correct 37 ms 15012 KB Output is correct
4 Correct 47 ms 16560 KB Output is correct
5 Correct 46 ms 16568 KB Output is correct
6 Correct 42 ms 15256 KB Output is correct
7 Correct 43 ms 15316 KB Output is correct
8 Correct 46 ms 15828 KB Output is correct
9 Correct 53 ms 15748 KB Output is correct
10 Correct 44 ms 15616 KB Output is correct
11 Correct 44 ms 15572 KB Output is correct
12 Correct 46 ms 15680 KB Output is correct
13 Correct 43 ms 15508 KB Output is correct
14 Correct 52 ms 15784 KB Output is correct
15 Correct 53 ms 15900 KB Output is correct
16 Correct 45 ms 13864 KB Output is correct
17 Correct 39 ms 13764 KB Output is correct
18 Correct 40 ms 13448 KB Output is correct
19 Correct 41 ms 13596 KB Output is correct
20 Correct 49 ms 14220 KB Output is correct
21 Correct 44 ms 13940 KB Output is correct
22 Correct 48 ms 16024 KB Output is correct
23 Correct 47 ms 13672 KB Output is correct
24 Correct 41 ms 13668 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 2 ms 1260 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 45 ms 13496 KB Output is correct
2 Incorrect 38 ms 13656 KB Wrong Answer [5]
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 39 ms 13488 KB Wrong Answer [5]
2 Halted 0 ms 0 KB -