답안 #1111014

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1111014 2024-11-11T09:56:23 Z crafticat Amusement Park (CEOI19_amusementpark) C++17
0 / 100
1 ms 336 KB
#include <bits/stdc++.h>

using namespace std;

template<typename T>
using V = vector<T>;
using vi = V<int>;
using vb = V<bool>;
using pi = pair<int,int>;

#define F0R(i,n) for (int i = 0; i < n;i++)
#define FOR(i, j, n) for(int i = j; i < n;i++)
#define ckmin(x,y) x = min(x,y)
#define f first
#define s second
using ll = long long;
constexpr int MOD = 998244353;

V<int> vis;
V<V<int>> g;

bool dfs(int x) {
    if (vis[x] == 1) return false;
    vis[x] = 1;
    for (auto y : g[x]) {
        if (vis[y] == 2) continue;
        if (!dfs(y)) return false;
    }

    vis[x] = 2;
    return true;
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(nullptr);

    int n, m; cin >> n >> m;
    V<pi> edges(m);
    set<pi> exists;

    F0R(i, m) {
        int x, y; cin >> x >> y;
        x--;
        y--;
        edges[i] = {x,y};
        exists.insert({x,y});
        exists.insert({y,x});
    }

    ll ans = 0;
    vi perm(n); // Height of I
    F0R(i, n)
        perm[i] = i;

    do {
        int cost = 0;
        for (auto [a,b] : edges) {
            if (perm[a] > perm[b]) cost++;
        }
        bool pos = true;
        F0R(i, n - 1) {
            int a = perm[i];
            int b = perm[i + 1];
            if (a > b && !exists.count({i,i + 1})) pos = false;
        }
        if (pos) ans += cost;
        ans %= MOD;
    } while (std::next_permutation(perm.begin(), perm.end()));

    cout << ans;

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Incorrect 1 ms 336 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Incorrect 1 ms 336 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Incorrect 1 ms 336 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Incorrect 1 ms 336 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 336 KB Output is correct
3 Incorrect 1 ms 336 KB Output isn't correct
4 Halted 0 ms 0 KB -