QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#422338 | #5956. Paradox Sort | luanmenglei | 32 ✓ | 149ms | 3668kb | C++17 | 1.9kb | 2024-05-27 12:20:08 | 2024-05-27 12:20:09 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
namespace SOL {
using i64 = long long;
void debug(const char *msg, ...) {
#ifdef CLESIP
va_list arg;
static char pbString[512];
va_start(arg,msg);
vsprintf(pbString,msg,arg);
cerr << "[DEBUG] " << pbString << "\n";
va_end(arg);
#endif
}
template<typename T, typename L>
bool chkmax(T &x, L y) { if (x < y) return x = y, true; return false; }
template<typename T, typename L>
bool chkmin(T &x, L y) { if (y < x) return x = y, true; return false; }
const int N = 110;
int n, st, ans[N];
bool g[N][N], vis[N], in[N];
char s[N];
void dfs(int x) {
if (vis[x])
return;
vis[x] = 1;
for (int i = 1; i <= n; i ++)
if (g[i][x] && !in[i])
dfs(i);
}
bool check(int pre) {
for (int i = 1; i <= n; i ++)
vis[i] = 0;
vis[pre] = 1;
dfs(st);
for (int i = 1; i <= n; i ++)
if (!vis[i] && !in[i] && !g[i][pre])
return 0;
return 1;
}
void solve(int kase) {
cout << "Case #" << kase << ": ";
cin >> n >> st; st += 1;
for (int i = 1; i <= n; i ++)
vis[i] = in[i] = false;
for (int i = 1; i <= n; i ++) {
cin >> (s + 1);
for (int j = 1; j <= n; j ++) {
if (s[j] == 'Y')
g[j][i] = 1;
else
g[j][i] = 0;
}
}
dfs(st);
for (int i = 1; i <= n; i ++)
if (!vis[i]) {
cout << "IMPOSSIBLE\n";
return;
}
int pre = -1;
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= n; j ++) if (!in[j]) {
if (pre != -1 && j == st && g[st][pre])
continue;
int cur = pre;
if (cur == -1 || g[cur][j])
cur = j;
in[j] = 1;
if (check(cur)) {
pre = cur;
ans[i] = j;
break;
}
in[j] = 0;
}
}
for (int i = 1; i <= n; i ++)
cout << ans[i] - 1 << " \n"[i == n];
}
}
int main() {
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int tt; cin >> tt;
for (int t = 1; t <= tt; t ++)
SOL::solve(t);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 4
Accepted
Test #1:
score: 4
Accepted
time: 1ms
memory: 3668kb
input:
100 3 0 -YN N-Y YN- 2 0 -Y N- 5 0 -YNNN N-YNN YN-YN YYN-Y YYYN- 5 1 -NYYY Y-NNN NY-NY NYY-N NYNY- 6 5 -YYNNY N-YYNY NN-NYN YNY-NY YYNY-Y NNYNN- 4 0 -YYY N-YN NN-N NYY- 2 0 -Y N- 5 1 -NYNY Y-YYY NN-YY YNN-N NNNY- 7 5 -YYYYYY N-NNYYN NY-YNNN NYN-NYN NNYY-NN NNYNY-N NYYYYY- 8 0 -YNNNNNN N-YNNNNN YN-YNN...
output:
Case #1: 1 2 0 Case #2: 0 1 Case #3: 3 4 2 1 0 Case #4: 0 2 3 4 1 Case #5: 0 1 3 4 2 5 Case #6: 0 1 2 3 Case #7: 0 1 Case #8: 0 1 2 3 4 Case #9: IMPOSSIBLE Case #10: 6 7 5 4 3 2 1 0 Case #11: 0 1 2 Case #12: 0 1 Case #13: 0 1 Case #14: IMPOSSIBLE Case #15: IMPOSSIBLE Case #16: 7 8 6 5 4 3 1 2 0 Case...
result:
ok 100 lines
Subtask #2:
score: 28
Accepted
Test #2:
score: 28
Accepted
time: 149ms
memory: 3648kb
input:
100 39 0 -YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN N-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YYN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YYYN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YYYYN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YYYYYN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YYYYYYN-YNN...
output:
Case #1: 37 38 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Case #2: 0 13 23 28 30 34 38 40 41 42 43 46 49 51 52 33 5 1 17 32 15 29 19 10 16 47 48 9 4 27 6 7 18 31 8 11 26 50 3 37 25 35 45 20 24 39 22 12 44 36 2 21 14 Case #3: 0 1 2 3 4 5 6 8 9...
result:
ok 100 lines
Extra Test:
score: 0
Extra Test Passed