QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#121852#6503. DFS Order 3P3KOTL 1ms4332kbC++201.2kb2023-07-08 22:19:422023-07-08 22:19:43

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-08 22:19:43]
  • Judged
  • Verdict: TL
  • Time: 1ms
  • Memory: 4332kb
  • [2023-07-08 22:19:42]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;

const int MAXN=1005;

int n;
deque<int> order[MAXN];
bool vis[MAXN][MAXN];
bool v[MAXN];
int ans1[MAXN],ans2[MAXN];

void init(int x){
	for(int i=1;i<=x;i++){
		while(order[i].size())order[i].pop_front();
		v[i]=0;
	}
}

int main(){
	//std::ios::sync_with_stdio(false);
	//std::cin.tie(NULL);

	int t;scanf("%d",&t);
	while(t--){
		
		cin>>n;
		for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){
			int x;scanf("%d",&x);
			order[i].push_back(x);
		}
		int cnt=0;
		while(cnt<n-1){
			int tag=0;
			for(int i=1;i<=n;i++){
				if(!order[i].empty()&&!tag){tag=order[i].back();v[tag]=1;}
				if(!order[i].empty()&&v[order[i].back()]==1)order[i].pop_back();
			}
			int nxt=0;
			for(int i=1;i<=n;i++)
				if(!order[i].empty()&&v[order[i].front()]==1){
					int u=order[i].front();
					order[i].pop_front();
					if(!order[i].empty()&&u==tag)nxt=order[i].front();
				}
			if(!vis[tag][nxt]&&nxt){
				ans1[++cnt]=tag;ans2[cnt]=nxt;
				vis[tag][nxt]=vis[nxt][tag]=1;
			}
		}
		for(int i=1;i<=cnt;i++){
			printf("%d %d\n",ans1[i],ans2[i]);
			vis[ans1[i]][ans2[i]]=0;
			vis[ans2[i]][ans1[i]]=0;
		}
		init(n);
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 4332kb

input:

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

output:

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

result:

ok correct answer! (4 test cases)

Test #2:

score: -100
Time Limit Exceeded

input:

20000
10
1 2 4 5 6 7 3 8 10 9
2 1 4 5 6 7 3 8 10 9
3 8 1 2 4 5 6 7 10 9
4 5 6 7 1 2 3 8 10 9
5 4 6 7 1 2 3 8 10 9
6 7 4 5 1 2 3 8 10 9
7 6 4 5 1 2 3 8 10 9
8 3 1 2 4 5 6 7 10 9
9 10 1 2 4 5 6 7 3 8
10 1 2 4 5 6 7 3 8 9
10
1 4 3 8 2 9 6 5 7 10
2 8 9 6 3 4 1 5 7 10
3 8 2 9 6 4 1 5 7 10
4 1 3 8 2 9 6 5...

output:


result: