QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#84742#4513. Slide Paradewangzhe_04770 14844ms78136kbC++232.2kb2023-03-06 18:10:102023-03-06 18:10:34

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-03-06 18:10:34]
  • 评测
  • 测评结果:0
  • 用时:14844ms
  • 内存:78136kb
  • [2023-03-06 18:10:10]
  • 提交

answer

// Google Code Jam 2022 World Finals
// Problem C. Slide Parade
#include <bits/stdc++.h>

using LL = long long;
using ULL = unsigned LL;

constexpr ULL E(long double x, int y) {
    while (y--) x *= 10;
    return x;
}
constexpr ULL SIZE(long double x, int y) {return E(x, y) + 5;}

const int inf32 = E(1, 9) + 5;
const LL inf64 = E(1, 18) + 5;

bool vis[205];
int n, m, mat[205];
std::pair<int, int> edge[5005];
std::unordered_set<int> graph[205];
std::unordered_multiset<int> _graph[205];
std::vector<int> ans;

bool Hungarian(int u) {
    if (vis[u]) return false;
    vis[u] = true;
    for (int v : graph[u]) {
        if (mat[v] && !Hungarian(mat[v])) continue;
        mat[v] = u;
        return true;
    }
    return false;
}
bool Dfs(int u, int s) {
    if (vis[u]) return false;
    vis[u] = true;
    if (mat[u] == s) return true;
    int w = mat[u];
    for (int v : graph[w]) {
        if (!Dfs(v, s)) continue;
        mat[v] = w;
        mat[u] = s;
        return true;
    }
    return false;
}

void Euler(int u) {
    ans.push_back(u);
    if (_graph[u].empty()) return;
    int v = *_graph[u].begin();
    _graph[u].erase(_graph[u].find(v));
    Euler(v);
}

void Solve(int data) {
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i++) {
        mat[i] = 0;
        graph[i].clear();
        _graph[i].clear();
    }
    for (int i = 1; i <= m; i++) {
        int x, y;
        scanf("%d%d", &x, &y);
        edge[i] = {x, y};
        graph[x].insert(y);
    }
    int cnt = 0;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) vis[j] = false;
        cnt += Hungarian(i);
    }
    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= n; j++) vis[j] = false;
        if (!Dfs(edge[i].second, edge[i].first)) {
            printf("Case #%d: IMPOSSIBLE\n", data);
            return;
        }
        for (int j = 1; j <= n; j++) _graph[mat[j]].insert(j);
    }
    ans.clear();
    Euler(1);
    ans.push_back(1);
    printf("Case #%d: %llu\n", ans.size());
    for (int x : ans) printf("%d ", x);
    putchar('\n');
}

int main() {
    int data_count;
    scanf("%d", &data_count);
    for (int data = 1; data <= data_count; data++) Solve(data);
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 3ms
memory: 3544kb

input:

100
5 8
1 2
1 3
1 4
1 5
2 1
3 1
4 1
5 1
5 10
1 3
1 4
2 3
2 5
3 1
3 4
3 5
4 2
5 1
5 3
5 10
1 4
2 3
2 5
3 1
3 5
4 2
4 3
4 5
5 1
5 2
3 6
1 2
1 3
2 1
2 3
3 1
3 2
5 10
1 2
1 5
2 3
2 4
3 1
4 3
4 5
5 2
5 3
5 4
4 10
1 2
1 3
1 4
2 1
2 3
2 4
3 1
3 4
4 2
4 3
5 10
1 2
1 3
2 1
2 4
3 1
3 5
4 2
4 5
5 3
5 4
5 10
1 ...

output:

Case #1: IMPOSSIBLE
Case #52: 94462764662880
1 4 2 3 1 4 2 3 1 4 2 3 5 3 5 3 5 1 4 2 3 5 1 4 2 3 5 1 4 2 5 1 4 2 5 1 3 4 2 5 1 3 4 2 5 1 3 4 2 5 1 1 
Case #52: 94462764662880
1 4 2 5 1 4 2 5 1 4 2 5 1 4 3 5 2 3 5 2 3 5 2 3 1 4 3 1 4 3 1 4 5 2 3 1 4 5 2 3 1 4 5 2 3 1 4 5 2 3 1 1 
Case #20: 9446276466...

result:

wrong output format Expected '#2:' but found '#52:' (test case 2)

Test #2:

score: 0
Wrong Answer
time: 14844ms
memory: 78136kb

input:

100
199 4980
1 95
1 96
1 105
1 124
1 130
1 131
1 135
1 137
1 139
1 140
1 141
1 147
1 155
1 172
1 174
1 179
1 183
1 188
1 193
1 196
1 197
2 3
2 5
2 13
2 14
2 17
2 20
2 24
2 26
2 30
2 41
2 44
2 45
2 52
2 56
2 67
2 70
2 71
2 74
2 78
2 84
2 85
2 90
2 92
2 93
2 97
2 107
2 111
2 113
2 122
2 124
2 128
2 13...

output:

Case #1: IMPOSSIBLE
Case #2: IMPOSSIBLE
Case #999426: 94435062648928
1 18 83 102 155 192 144 150 159 78 37 198 193 137 196 195 188 165 167 197 185 117 196 2 160 185 91 53 69 49 129 187 200 103 114 193 3 126 153 187 141 4 105 193 11 71 10 61 146 192 26 199 180 197 184 176 124 163 173 188 5 166 193 11...

result:

wrong output format Expected '#3:' but found '#999426:' (test case 3)