QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#887431#8056. Travel 2SJZ2010AC ✓210ms5004kbC++142.9kb2025-02-07 17:13:552025-02-07 17:13:56

Judging History

This is the latest submission verdict.

  • [2025-02-07 17:13:56]
  • Judged
  • Verdict: AC
  • Time: 210ms
  • Memory: 5004kb
  • [2025-02-07 17:13:55]
  • Submitted

answer

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

using ll = long long;
using vi = vector < int >;
#define pb push_back
#define sz(x) ((int)(x).size())
#define me(a, b) memset(a, b, sizeof(a))
#define qio() cin.tie(0) -> sync_with_stdio(0)
#define L(i, j, k) for (int i = j; i <= int(k); i++)
#define R(i, j, k) for (int i = j; i >= int(k); i--)

template < class T > ostream& operator << (ostream& out, vector < T > v) {
	out << '[';  if (!v.empty()) { L(i, 0, v.size() - 2) out << v[i] << ','; out << v[v.size() - 1]; } return out << ']';
}
#define DEBUG
namespace Dbg {
	template < class T > void dbg(char *f, T t) { cerr << f << " = " << t << endl; }
	template < class T, class ...Ar > void dbg(char *f, T x, Ar... y) {
		while (*f != ',') { cerr << *f++; } cerr << " = " << x << ","; dbg(f + 1, y...);
	}
}
#ifdef DEBUG
	#define gdb(...) cerr << "gdb " << __LINE__ << ": ", Dbg::dbg((char*)#__VA_ARGS__,__VA_ARGS__)
#else
	#define gdb(...) void()
	#define debug void()
#endif

const int N = 2505;

string result;
int deg[N], fa[N], faid[N], cur[N];
bool appear[N];
map < int, int > G[N];

void solve() {
	int finish = 0, travel = 1, last = N - 1, u, lastout = 0, now = 0, rt = 0;
	bool determined = 0;
	vector < pair < int, int > > edge;

	while (finish < travel) {
		now++;
		cin >> u >> deg[u];
		G[last][u] = lastout;

		if (now == 1) {
			rt = u;
		}

		if (!appear[u]) {
			travel++;
			travel -= now == 1;
			appear[u] = 1;
		}

		if (u == fa[last] && !determined) {
//			gdb(last, G[u][last], lastout);
			faid[last] = lastout;
			lastout = G[u][last];
			last = u;
			cout << "> " /* << "Ops " */ << lastout << endl;
			continue;
		} else if (u != fa[last]) { // 上面新加了个坚定返回的判定, 这儿得注意多判断!
			if (!fa[u]) { // 再判断一下
				fa[u] = last;
			}
//			faid[u] = lastout; // 之前忘记更新这个了
//			瞎更新, 上面那行注释是胡说八道
		}

		if (last && last != N - 1) {
			edge.pb({last, u});
		}

		last = u;
		if (cur[u] == deg[u]) { // It's time to return
			finish++;
			lastout = faid[u];
//			gdb(u, faid[u]);
			determined = 1;
			if (u == rt) {
				break;
			} // 不做这个判断会输出一个 0, 我测样例居然没发现! =.=
//			cout << "Back";
		} else {
			lastout = ++cur[u];
			determined = 0;
//			cout << "Wander";
		}
		cout << "> " << lastout << endl;
	}

	for (auto &[u, v] : edge) {
		if (u > v) {
			swap(u, v);
		}
	}
	sort(edge.begin(), edge.end());
	edge.erase(unique(edge.begin(), edge.end()), edge.end());
	cout << "! ";
	for (auto [u, v] : edge) {
		cout << u << ' ' << v << ' ';
	}
	cout << endl;

	cin >> result;
	me(appear, 0);
	me(fa, 0);
	me(faid, 0);
	me(cur, 0);
	L(i, 0, travel) {
		map < int, int >().swap(G[i]);
	}
}

int main() {
	int T;
	cin >> T;
	while (T--) {
		solve();
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3712kb

input:

2
1 1
2 1
1 1
2 1
1 1
Correct
1 3
2 2
1 3
2 2
4 2
1 3
3 1
1 3
3 1
1 3
4 2
2 2
4 2
2 2
1 3
Correct

output:

> 1
> 1
> 1
> 1
! 1 2 
> 1
> 1
> 1
> 2
> 1
> 2
> 1
> 2
> 1
> 3
> 2
> 2
> 2
> 1
! 1 2 1 3 1 4 2 4 

result:

ok correct! (2 test cases)

Test #2:

score: 0
Accepted
time: 175ms
memory: 3712kb

input:

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

output:

> 1
> 1
> 1
> 2
> 1
> 2
> 2
> 1
> 3
> 2
> 2
> 3
> 1
> 4
> 1
> 4
> 2
> 1
> 5
> 1
> 5
> 2
> 3
> 1
> 6
> 2
> 3
> 3
> 2
> 2
> 3
> 2
> 3
> 3
> 4
> 1
> 7
> 5
> 4
> 3
> 2
> 3
> 3
> 4
> 4
> 3
> 4
> 4
> 5
> 4
> 5
> 4
> 2
> 5
> 6
> 5
> 6
> 6
> 6
> 7
> 7
> 6
> 8
> 5
> 9
> 7
> 4
> 5
> 7
> 6
> 5
> 4
> 6
> 7
> 8
...

result:

ok correct! (1000 test cases)

Test #3:

score: 0
Accepted
time: 174ms
memory: 3584kb

input:

500
1 19
2 8
1 19
2 8
17 10
1 19
3 7
1 19
3 7
20 6
1 19
4 8
1 19
4 8
3 7
11 8
1 19
5 7
1 19
5 7
7 11
1 19
6 7
1 19
6 7
5 7
6 7
17 10
2 8
17 10
6 7
11 8
3 7
11 8
8 4
1 19
7 11
5 7
7 11
16 7
1 19
8 4
11 8
8 4
15 8
1 19
9 7
1 19
9 7
4 8
12 7
1 19
10 9
1 19
10 9
5 7
10 9
17 10
14 9
1 19
11 8
16 7
13 4
1...

output:

> 1
> 1
> 1
> 2
> 1
> 2
> 1
> 2
> 2
> 1
> 3
> 1
> 3
> 2
> 3
> 1
> 4
> 1
> 4
> 2
> 1
> 5
> 1
> 5
> 2
> 3
> 3
> 2
> 2
> 3
> 4
> 2
> 3
> 3
> 1
> 6
> 2
> 2
> 3
> 1
> 7
> 2
> 3
> 3
> 1
> 8
> 1
> 8
> 2
> 3
> 1
> 9
> 1
> 9
> 2
> 4
> 3
> 4
> 1
> 10
> 4
> 2
> 1
> 11
> 2
> 3
> 3
> 3
> 5
> 4
> 4
> 5
> 6
> 5
> ...

result:

ok correct! (500 test cases)

Test #4:

score: 0
Accepted
time: 202ms
memory: 3712kb

input:

100
1 99
2 5
1 99
2 5
12 7
1 99
3 5
1 99
3 5
76 9
1 99
4 10
1 99
4 10
74 6
1 99
5 3
1 99
5 3
99 7
1 99
6 9
1 99
6 9
20 4
1 99
7 6
1 99
7 6
67 10
1 99
8 8
1 99
8 8
70 9
1 99
9 9
1 99
9 9
93 10
1 99
10 5
1 99
10 5
47 4
1 99
11 4
1 99
11 4
95 12
1 99
12 7
2 5
12 7
41 7
1 99
13 6
1 99
13 6
86 6
1 99
14 ...

output:

> 1
> 1
> 1
> 2
> 1
> 2
> 1
> 2
> 2
> 1
> 3
> 1
> 3
> 2
> 1
> 4
> 1
> 4
> 2
> 1
> 5
> 1
> 5
> 2
> 1
> 6
> 1
> 6
> 2
> 1
> 7
> 1
> 7
> 2
> 1
> 8
> 1
> 8
> 2
> 1
> 9
> 1
> 9
> 2
> 1
> 10
> 1
> 10
> 2
> 1
> 11
> 2
> 2
> 3
> 1
> 12
> 1
> 12
> 2
> 1
> 13
> 1
> 13
> 2
> 1
> 14
> 1
> 14
> 2
> 1
> 15
> 1
> ...

result:

ok correct! (100 test cases)

Test #5:

score: 0
Accepted
time: 210ms
memory: 4224kb

input:

10
1 999
2 8
1 999
2 8
717 8
1 999
3 9
1 999
3 9
311 9
1 999
4 8
1 999
4 8
876 8
1 999
5 7
1 999
5 7
866 6
1 999
6 7
1 999
6 7
687 9
1 999
7 4
1 999
7 4
587 8
1 999
8 4
1 999
8 4
98 7
1 999
9 13
1 999
9 13
935 11
1 999
10 11
1 999
10 11
232 7
1 999
11 7
1 999
11 7
84 8
1 999
12 7
1 999
12 7
595 7
1 ...

output:

> 1
> 1
> 1
> 2
> 1
> 2
> 1
> 2
> 2
> 1
> 3
> 1
> 3
> 2
> 1
> 4
> 1
> 4
> 2
> 1
> 5
> 1
> 5
> 2
> 1
> 6
> 1
> 6
> 2
> 1
> 7
> 1
> 7
> 2
> 1
> 8
> 1
> 8
> 2
> 1
> 9
> 1
> 9
> 2
> 1
> 10
> 1
> 10
> 2
> 1
> 11
> 1
> 11
> 2
> 1
> 12
> 1
> 12
> 2
> 1
> 13
> 1
> 13
> 2
> 1
> 14
> 1
> 14
> 2
> 1
> 15
> 1
>...

result:

ok correct! (10 test cases)

Test #6:

score: 0
Accepted
time: 202ms
memory: 4796kb

input:

4
1 999
2 24
1 999
2 24
293 19
1 999
3 20
1 999
3 20
804 22
1 999
4 17
1 999
4 17
992 26
1 999
5 29
1 999
5 29
134 20
1 999
6 21
1 999
6 21
883 18
1 999
7 21
1 999
7 21
10 14
1 999
8 19
1 999
8 19
214 18
1 999
9 21
1 999
9 21
420 29
1 999
10 14
816 16
1 999
11 12
1 999
11 12
814 13
1 999
12 17
1 999...

output:

> 1
> 1
> 1
> 2
> 1
> 2
> 1
> 2
> 2
> 1
> 3
> 1
> 3
> 2
> 1
> 4
> 1
> 4
> 2
> 1
> 5
> 1
> 5
> 2
> 1
> 6
> 1
> 6
> 2
> 1
> 7
> 1
> 7
> 2
> 1
> 8
> 1
> 8
> 2
> 1
> 9
> 2
> 1
> 10
> 1
> 10
> 2
> 1
> 11
> 1
> 11
> 2
> 1
> 12
> 1
> 12
> 2
> 1
> 13
> 1
> 13
> 2
> 1
> 14
> 1
> 14
> 2
> 1
> 15
> 1
> 15
> 2
...

result:

ok correct! (4 test cases)

Test #7:

score: 0
Accepted
time: 163ms
memory: 5004kb

input:

4
1 199
2 106
1 199
2 106
114 107
1 199
3 95
1 199
3 95
74 101
1 199
4 102
1 199
4 102
56 101
1 199
5 103
1 199
5 103
117 106
1 199
6 103
1 199
6 103
4 102
44 100
1 199
7 110
1 199
7 110
178 97
1 199
8 109
1 199
8 109
2 106
8 109
20 108
1 199
9 104
1 199
9 104
85 92
1 199
10 98
1 199
10 98
128 99
1 ...

output:

> 1
> 1
> 1
> 2
> 1
> 2
> 1
> 2
> 2
> 1
> 3
> 1
> 3
> 2
> 1
> 4
> 1
> 4
> 2
> 1
> 5
> 1
> 5
> 2
> 3
> 1
> 6
> 1
> 6
> 2
> 1
> 7
> 1
> 7
> 2
> 3
> 3
> 1
> 8
> 1
> 8
> 2
> 1
> 9
> 1
> 9
> 2
> 1
> 10
> 1
> 10
> 2
> 1
> 11
> 1
> 11
> 2
> 1
> 12
> 1
> 12
> 2
> 1
> 13
> 1
> 13
> 2
> 1
> 14
> 1
> 14
> 2
> ...

result:

ok correct! (4 test cases)

Test #8:

score: 0
Accepted
time: 111ms
memory: 4608kb

input:

4
1 140
2 140
1 140
2 140
3 140
1 140
3 140
2 140
3 140
4 140
1 140
4 140
2 140
4 140
3 140
4 140
5 140
1 140
5 140
2 140
5 140
3 140
5 140
4 140
5 140
6 140
1 140
6 140
2 140
6 140
3 140
6 140
4 140
6 140
5 140
6 140
7 140
1 140
7 140
2 140
7 140
3 140
7 140
4 140
7 140
5 140
7 140
6 140
7 140
8 14...

output:

> 1
> 1
> 1
> 2
> 1
> 2
> 2
> 2
> 3
> 1
> 3
> 2
> 3
> 3
> 3
> 4
> 1
> 4
> 2
> 4
> 3
> 4
> 4
> 4
> 5
> 1
> 5
> 2
> 5
> 3
> 5
> 4
> 5
> 5
> 5
> 6
> 1
> 6
> 2
> 6
> 3
> 6
> 4
> 6
> 5
> 6
> 6
> 6
> 7
> 1
> 7
> 2
> 7
> 3
> 7
> 4
> 7
> 5
> 7
> 6
> 7
> 7
> 7
> 8
> 1
> 8
> 2
> 8
> 3
> 8
> 4
> 8
> 5
> 8
> 6
...

result:

ok correct! (4 test cases)

Test #9:

score: 0
Accepted
time: 88ms
memory: 4224kb

input:

4
1 2498
2 2
1 2498
2 2
2500 2498
2 2
2500 2498
3 2
1 2498
3 2
2500 2498
3 2
2500 2498
4 2
1 2498
4 2
2500 2498
4 2
2500 2498
5 2
1 2498
5 2
2500 2498
5 2
2500 2498
6 2
1 2498
6 2
2500 2498
6 2
2500 2498
7 2
1 2498
7 2
2500 2498
7 2
2500 2498
8 2
1 2498
8 2
2500 2498
8 2
2500 2498
9 2
1 2498
9 2
250...

output:

> 1
> 1
> 1
> 2
> 1
> 2
> 2
> 1
> 2
> 2
> 2
> 2
> 3
> 1
> 3
> 2
> 3
> 2
> 4
> 1
> 4
> 2
> 4
> 2
> 5
> 1
> 5
> 2
> 5
> 2
> 6
> 1
> 6
> 2
> 6
> 2
> 7
> 1
> 7
> 2
> 7
> 2
> 8
> 1
> 8
> 2
> 8
> 2
> 9
> 1
> 9
> 2
> 9
> 2
> 10
> 1
> 10
> 2
> 10
> 2
> 11
> 1
> 11
> 2
> 11
> 2
> 12
> 1
> 12
> 2
> 12
> 2
> 1...

result:

ok correct! (4 test cases)

Extra Test:

score: 0
Extra Test Passed