QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#422281#5956. Paradox SortIDontKnowGoodNames32 ✓191ms3956kbC++171.3kb2024-05-27 10:42:062024-05-27 10:42:06

Judging History

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

  • [2024-05-27 10:42:06]
  • 评测
  • 测评结果:32
  • 用时:191ms
  • 内存:3956kb
  • [2024-05-27 10:42:06]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int NR=110;
int n,k,ans[NR],mp[NR][NR],flag[NR],vis[NR];
char str[NR];

void dfs(int x,int tar){
	vis[x]=1;
	if(x!=tar){
		for(int i=1;i<=n;i++)
			if(!flag[i]&&!vis[i]&&mp[x][i])dfs(i,tar);
	}
}
bool check(int x){
	memset(vis,0,sizeof(vis));
	dfs(k,x);
	for(int i=1;i<=n;i++)
		if(!flag[i]&&!vis[i]&&!mp[x][i])return 0;
	return 1;
}

void solve(int Tid){
	cin>>n>>k;k++;
	memset(mp,0,sizeof(mp));
	for(int i=1;i<=n;i++){
		scanf("%s",str+1);
		for(int j=1;j<=n;j++)mp[i][j]=str[j]=='Y';
	}
	memset(flag,0,sizeof(flag));
	printf("Case #%d: ",Tid);
	if(!check(n+1)){
		puts("IMPOSSIBLE");
		return;
	}
	for(int i=1,pre,nxt;i<=n;i++){
		for(int j=1;j<=n;j++)
			if(!flag[j]){
				if(j==k&&i>1&&!mp[j][pre])continue;
				flag[j]=1;
				if(i==1||mp[j][pre])nxt=j;
				else nxt=pre;
				flag[nxt]=0;
				if(!check(nxt)){
					flag[nxt]=1;flag[j]=0;
					continue;
				}
				flag[nxt]=1;pre=nxt;ans[i]=j;
				break;
			}
		if(ans[i]==k){
			for(int j=1,now=i;j<=n;j++)
				if(!flag[j])ans[++now]=j;
			sort(ans+i+1,ans+n+1);
			break;
		}
	}
	for(int i=1;i<=n;i++)printf("%d ",ans[i]-1);
	puts("");
}

int main(){
	int T;cin>>T;
	for(int i=1;i<=T;i++)solve(i);
	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: 3956kb

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: 191ms
memory: 3856kb

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