Submission #47249750


Source Code Expand

#include <bits/stdc++.h>
#include <atcoder/modint>

namespace {
using ModInt [[maybe_unused]] = atcoder::modint998244353;
using Num [[maybe_unused]] = long long int;
using Vec [[maybe_unused]] = std::vector<Num>;
using Set [[maybe_unused]] = std::set<Num>;
using Mset [[maybe_unused]] = std::multiset<Num>;
using Edges [[maybe_unused]] = std::vector<std::vector<Num>>;

template<typename T>
using Q [[maybe_unused]] = std::queue<T>;

template<typename T>
using PQ [[maybe_unused]] = std::priority_queue<T, std::vector<T>, std::greater<T>>;
}

void solve(std::istream& is, std::ostream& os) {
    Num n, m;
    is >> n >> m;

    Vec aset(m, 0);
    for(auto&& x : aset) {
        is >> x;
        --x;
    }

    Vec bset(m, 0);
    for(auto&& x : bset) {
        is >> x;
        --x;
    }

    Edges edges(n);
    for(Num i{0}; i<m; ++i) {
        const auto a = aset.at(i);
        const auto b = bset.at(i);
        if (a == b) {
            os << "No\n";
            return;
        }

        edges[a].push_back(b);
        edges[b].push_back(a);
    }

    Vec colors(n, -1);
    for(Num i{0}; i<n; ++i) {
        if (colors.at(i) >= 0) {
            continue;
        }

        Q<std::pair<Num, Num>> q;
        q.push(std::make_pair(i, 0));
        colors.at(i) = 0;

        while(!q.empty()) {
            const auto [from, color] = q.front();
            q.pop();

            const auto next_color = 1 - color;
            for(const auto& next : edges[from]) {
                const auto c = colors.at(next);
                if (c < 0) {
                    colors.at(next) = next_color;
                    q.push(std::make_pair(next, next_color));
                } else {
                    if (c != next_color) {
                        os << "No\n";
                        return;
                    }
                }
            }
        }
    }

    os << "Yes\n";
}

int main(void) {
    solve(std::cin, std::cout);
    return 0;
}

Submission Info

Submission Time
Task D - Good Tuple Problem
User zettsut
Language C++ 20 (gcc 12.2)
Score 400
Code Size 2045 Byte
Status AC
Exec Time 112 ms
Memory 20568 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 4
AC × 27
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_1_00.txt, 01_random_1_01.txt, 01_random_1_02.txt, 01_random_1_03.txt, 01_random_1_04.txt, 02_random_2_00.txt, 02_random_2_01.txt, 02_random_2_02.txt, 02_random_2_03.txt, 02_random_2_04.txt, 02_random_2_05.txt, 02_random_2_06.txt, 02_random_2_07.txt, 02_random_2_08.txt, 02_random_2_09.txt, 03_tree_00.txt, 04_path_00.txt, 05_corner_00.txt, 05_corner_01.txt, 05_corner_02.txt, 05_corner_03.txt, 05_corner_04.txt, 05_corner_05.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3684 KiB
00_sample_01.txt AC 1 ms 3684 KiB
00_sample_02.txt AC 1 ms 3480 KiB
00_sample_03.txt AC 1 ms 3480 KiB
01_random_1_00.txt AC 13 ms 6096 KiB
01_random_1_01.txt AC 14 ms 7676 KiB
01_random_1_02.txt AC 16 ms 7132 KiB
01_random_1_03.txt AC 24 ms 9928 KiB
01_random_1_04.txt AC 31 ms 6104 KiB
02_random_2_00.txt AC 25 ms 7392 KiB
02_random_2_01.txt AC 33 ms 9424 KiB
02_random_2_02.txt AC 24 ms 7460 KiB
02_random_2_03.txt AC 30 ms 8168 KiB
02_random_2_04.txt AC 29 ms 7192 KiB
02_random_2_05.txt AC 23 ms 5488 KiB
02_random_2_06.txt AC 31 ms 9532 KiB
02_random_2_07.txt AC 42 ms 10196 KiB
02_random_2_08.txt AC 29 ms 8952 KiB
02_random_2_09.txt AC 43 ms 10400 KiB
03_tree_00.txt AC 105 ms 20568 KiB
04_path_00.txt AC 82 ms 18640 KiB
05_corner_00.txt AC 1 ms 3456 KiB
05_corner_01.txt AC 34 ms 6336 KiB
05_corner_02.txt AC 38 ms 9668 KiB
05_corner_03.txt AC 38 ms 9664 KiB
05_corner_04.txt AC 80 ms 18804 KiB
05_corner_05.txt AC 112 ms 18804 KiB