QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#114990 | #5956. Paradox Sort | DerekFeng | 32 ✓ | 174ms | 3704kb | C++23 | 1.1kb | 2023-06-24 13:20:02 | 2023-06-24 13:20:04 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
bool gr[104][104];
bool del[104],vis[104];
int n,c,ans[104];
void dfs(int x,int d){
vis[x]=1;
if(x!=d)for(int i=0;i<n;i++)
if(!vis[i]&&!del[i]&&gr[x][i])
dfs(i,d);
}
bool check(int d){
memset(vis,0,sizeof(vis));
dfs(c,d);
for(int i=0;i<n;i++)if(!del[i]&&!vis[i]&&!gr[d][i])return 0;
return 1;
}
void sol(){
memset(gr,0,sizeof(gr));
scanf("%d%d",&n,&c);
for(int i=0;i<n;i++){
char buf[104];scanf("%s",buf);
for(int j=0;j<n;j++)gr[i][j]=buf[j]=='Y';
}
memset(del,0,sizeof(del));
if(!check(n)){puts("IMPOSSIBLE");return;}
for(int i=0,pr;i<n;i++){
for(int j=0;j<n;j++)if(!del[j]){
if(j==c&&i&&!gr[j][pr])continue;
del[j]=1;int npr=(!i||gr[j][pr]?j:pr);del[npr]=0;
if(!check(npr)){del[npr]=1,del[j]=0;continue;}
del[npr]=1,pr=npr,ans[i]=j;break;
}
if(ans[i]==c){
for(int j=0,k=i;j<n;j++)if(!del[j])ans[++k]=j;
sort(ans+i+1,ans+n);break;
}
}
for(int i=0;i<n;i++)printf("%d ",ans[i]);puts("");
}
int main(){
int tc;scanf("%d",&tc);
for(int tt=1;tt<=tc;tt++)
printf("Case #%d: ",tt),sol();
}
详细
Subtask #1:
score: 4
Accepted
Test #1:
score: 4
Accepted
time: 1ms
memory: 3604kb
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 ...
result:
ok 100 lines
Subtask #2:
score: 28
Accepted
Test #2:
score: 28
Accepted
time: 174ms
memory: 3704kb
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...
result:
ok 100 lines
Extra Test:
score: 0
Extra Test Passed