CP-Algorithms Library

This documentation is automatically generated by competitive-verifier/competitive-verifier

View the Project on GitHub cp-algorithms/cp-algorithms-aux

:heavy_check_mark: Counting Eulerian Circuits (verify/linalg/euler_circs.test.cpp)

Depends on

Code

// @brief Counting Eulerian Circuits
#define PROBLEM "https://judge.yosupo.jp/problem/counting_eulerian_circuits"
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
#include <bits/stdc++.h>
//#include "blazingio/blazingio.min.hpp"
#include "cp-algo/math/combinatorics.hpp"
#include "cp-algo/linalg/matrix.hpp"

using namespace std;
using namespace cp_algo::math;
using namespace cp_algo::linalg;

const int64_t mod = 998244353;
using base = modint<mod>;

void solve() {
    int n, m;
    cin >> n >> m;
    matrix<base> a(n);
    int r = 0;
    cp_algo::big_vector<int> indeg(n), outdeg(n);
    for(int i = 0; i < m; i++) {
        int u, v;
        cin >> u >> v;
        a[u][v] -= 1;
        a[v][v] += 1;
        outdeg[u]++;
        indeg[v]++;
        r = v;
    }
    a[r][r] = fact<base>(indeg[r] - 1);
    for(int i = 0; i < n; i++) {
        if(i == r) {
            continue;
        }
        if(indeg[i] != outdeg[i]) {
            cout << 0 << "\n";
            return;
        }
        if(indeg[i] != 0) {
            a[i] *= fact<base>(indeg[i] - 1);
        } else {
            a[i][i] = 1;
        }
        a[r][i] = a[i][r] = 0;
    }
    cout << a.det() << "\n";
}

signed main() {
    //freopen("input.txt", "r", stdin);
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t = 1;
    // cin >> t;
    while(t--) {
        solve();
    }
}
Traceback (most recent call last):
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj_resolve/resolver.py", line 181, in resolve
    bundled_code = language.bundle(path, basedir=basedir)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/verify/languages/cplusplus.py", line 252, in bundle
    bundler.update(path)
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/verify/languages/cplusplus_bundle.py", line 327, in update
    assert len(lines) == len(uncommented_lines)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError

Test cases

Env Name Status Elapsed Memory
g++ example_00 :heavy_check_mark: AC 9 ms 8 MB
g++ example_01 :heavy_check_mark: AC 9 ms 8 MB
g++ example_02 :heavy_check_mark: AC 9 ms 8 MB
g++ example_03 :heavy_check_mark: AC 9 ms 8 MB
g++ has_isolated_point_00 :heavy_check_mark: AC 34 ms 12 MB
g++ has_isolated_point_01 :heavy_check_mark: AC 35 ms 12 MB
g++ has_isolated_point_02 :heavy_check_mark: AC 32 ms 11 MB
g++ has_isolated_point_03 :heavy_check_mark: AC 34 ms 12 MB
g++ loops_00 :heavy_check_mark: AC 33 ms 12 MB
g++ loops_01 :heavy_check_mark: AC 30 ms 10 MB
g++ max_random_00 :heavy_check_mark: AC 30 ms 10 MB
g++ max_random_01 :heavy_check_mark: AC 30 ms 10 MB
g++ max_random_circuit_00 :heavy_check_mark: AC 51 ms 12 MB
g++ max_random_circuit_01 :heavy_check_mark: AC 44 ms 11 MB
g++ max_random_circuit_02 :heavy_check_mark: AC 44 ms 11 MB
g++ max_random_circuit_03 :heavy_check_mark: AC 44 ms 12 MB
Back to top page