QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#371467#905. 三元环枚举IsrothyRE 0ms0kbC++231.2kb2024-03-30 12:50:302024-03-30 12:50:30

Judging History

This is the latest submission verdict.

  • [2024-03-30 12:50:30]
  • Judged
  • Verdict: RE
  • Time: 0ms
  • Memory: 0kb
  • [2024-03-30 12:50:30]
  • Submitted

answer

#include <cstdio>
#include <span>
#include <vector>
auto three_membered_rings(std::span<std::vector<int>> adj) {
    auto n = adj.size() - 1;
    std::vector<size_t> rank(n + 1);
    std::vector<int> vis_time(n + 1);
    std::vector<std::vector<int>> f(n + 1);
    for (int u = 1; u <= n; ++u) {
        rank[u] = adj[u].size() * (n + 1) + u;
    }
    for (int u = 1; u <= n; ++u) {
        for (auto v: adj[u]) {
            if (rank[u] < rank[v]) {
                f[u].push_back(v);
            }
        }
    }
    int res = 0;
    for (int u = 1; u <= n; ++u) {
        for (auto v: f[u]) {
            vis_time[v] = u;
        }
        for (auto v: f[u]) {
            for (auto w: f[v]) {
                if (vis_time[w] == u) {
                    ++res;
                }
            }
        }
    }
    return res;
}
int main() {
    int n, m;
    scanf("%d%d", &n, &m);
    std::vector<std::vector<int>> adj(n + 1);
    for (int i = 0; i < m; ++i) {
        int u, v;
        scanf("%d%d", &u, &v);
        ++u;
        ++v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    printf("%d\n", three_membered_rings(adj));

    return 0;
}

详细

Test #1:

score: 0
Runtime Error

input:

4 5
1 2 3 4
0 3
2 0
2 1
2 3
1 3

output:


result: