QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#558865#8220. 众生之门The_cosmos10 773ms20112kbC++144.1kb2024-09-11 18:57:072024-09-11 18:57:08

Judging History

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

  • [2024-09-11 18:57:08]
  • 评测
  • 测评结果:10
  • 用时:773ms
  • 内存:20112kb
  • [2024-09-11 18:57:07]
  • 提交

answer

#include <bits/stdc++.h>
#define REP(i, first, last) for (int i = (first); i <= (last); ++i)
#define DOW(i, first, last) for (int i = (first); i >= (last); --i)
using namespace std;
// #define int long long
#define pb emplace_back
#define ull unsigned long long
const int N = 5e5 + 5, M = 2e5 + 5, Sg = 26;
const int mod1 = 1e9 + 9, mod2 = 998244353;
const long long inf = 1e18;
const int dx[] = {-1, -1, -1, 0, 0, 0, 1, 1, 1};
const int dy[] = {-1, 0, 1, -1, 0, 1, -1, 0, 1};
const int P = 1ll << 21, S = P - 1;
struct Graph {
  struct edge {
    int from, to, next;
    int w;
  } e[N << 1];
  int cnt, n, head[N];
  void ins(int u, int v, int w = 0) {
    e[++cnt] = {u, v, head[u], w}, n = max({n, u, v}), head[u] = cnt;
  }
  void twi(int u, int v, int w = 0) { ins(u, v, w), ins(v, u, w); }
  void clear() {
    for (int i = 1; i <= cnt; i++) head[e[i].from] = 0;
    cnt = 0;
  }
#define FEG(u, v, W, G, i)                                \
  for (int i = G.head[u], v = G.e[i].to, W = G.e[i].w; i; \
       i = G.e[i].next, v = G.e[i].to, W = G.e[i].w)
} G;
int n, s, t;
int pos[N];
struct LCA {
  int dfn[N], dfncnt = 0, pre[N], siz[N], f[N][25], dep[N];
  void dfs(int u, int fa) {
    dfn[u] = ++dfncnt;
    dep[u] = dep[fa] + 1;
    pre[dfncnt] = u;
    f[u][0] = fa;
    REP(i, 1, 20) f[u][i] = f[f[u][i - 1]][i - 1];
    FEG(u, v, W, G, i) {
      if (v == fa) continue;
      dfs(v, u);
      pre[++dfncnt] = u;
    }
  }
  int logn[N << 1];
  int st[N << 1][25];
  void init() {
    logn[0] = -1;
    REP(i, 1, dfncnt) {
      logn[i] = logn[i / 2] + 1;
      st[i][0] = pre[i];
    }
    for (int j = 1; (1 << j) <= dfncnt; j++) {
      for (int i = 1; i + (1 << j) <= dfncnt + 1; i++) {
        int u = st[i][j - 1], v = st[i + (1 << (j - 1))][j - 1];
        st[i][j] = ((dep[u] > dep[v]) ? v : u);
      }
    }
  }
  int lca(int l, int r) {
    int ql = dfn[l], qr = dfn[r];
    if (qr < ql) swap(qr, ql);
    int k = logn[qr - ql + 1];
    return (dep[st[ql][k]] < dep[st[qr - (1 << k) + 1][k]]
                ? st[ql][k]
                : st[qr - (1 << k) + 1][k]);
  }
  int dist(int u, int v) {
    int w = lca(u, v);
    return dep[u] + dep[v] - 2 * dep[w];
  }
} f;
bool check() {
	REP(u, 1, n) {
		int ans = 0;
		FEG(u, v, w, G, i) {
			ans ++;
		}
		if(ans == n - 1) return 1;
	}
	return 0;
}
mt19937_64 rnd(chrono :: system_clock().now().time_since_epoch().count());
int rand(int l, int r) {
	return rnd() % (r - l + 1) + l;
}
int get(int x) {
	return f.dist(pos[x], pos[x - 1]) ^ f.dist(pos[x], pos[x + 1]);
}
bool vis[N];
int ans = 5, opt[N];
void answer() {
	int res = 0;
	REP(i, 1, n - 1) res ^= f.dist(pos[i], pos[i + 1]);
	if(res < ans) {
		ans = res;
		REP(i, 1, n) opt[i] = pos[i];
	}
}
void dfs(int u) {
	if(u > n - 1) return answer();
	REP(i, 1, n) {
		if(!vis[i] && f.dist(i, pos[u - 1]) > 4) continue;
		pos[u] = i, vis[i] = 1;
		dfs(u + 1), vis[i] = 0;
	}
}
void Solve() {
  cin >> n >> s >> t;
  // cerr << "qwq";
  G.clear(), f.dfncnt = 0;
  REP(i, 2, n) {
    int u, v;
    cin >> u >> v;
    G.twi(u, v);
  }
  pos[1] = s, pos[n] = t;
  int l = 1;
  REP(i, 2, n - 1) {
    while (l == s || l == t) l++;
    pos[i] = l, l ++;
  }
  // REP(i, 1, n) cerr << pos[i] << ' ';
  // cerr << '\n';
  f.dfs(1, 0), f.init();
  int res = 0;
  REP(i, 1, n - 1) res ^= f.dist(pos[i], pos[i + 1]);
  if(check()) {
  	REP(i, 1, n) cout << pos[i] << ' ';
  	cout << '\n';
  	return ;
  }
  if(n < 9) {
  	REP(i, 1, n) vis[i] = 0;
  	vis[s] = vis[t] = 1;
  	ans = 5, dfs(2);
  	REP(i, 1, n) cout << opt[i] << ' ';
  	cout << '\n';
  	return ;
  }
  while(res > 1) {
  	int x = rand(2, n - 1), y = rand(2, n - 1);
  	while(x == y) y = rand(2, n - 1);
  	res ^= get(x) ^ get(y);
  	swap(pos[x], pos[y]);
  	res ^= get(x) ^ get(y);
  }
  REP(i, 1, n) cout << pos[i] << ' ';
  cout << '\n';
}
signed main() {
  //	freopen(".in", "r", stdin);
  //	freopen(".out", "w", stdout);
  ios::sync_with_stdio(false);
  cin.tie(nullptr), cout.tie(nullptr);
  int T = 1;
  cin >> T;
  while (T--) {
    Solve();
  }
  return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 18048kb

input:

114
6 5 6
2 6
1 6
4 5
3 1
6 4
6 3 6
2 4
4 1
6 4
1 5
5 3
6 6 1
5 2
1 2
4 6
2 4
3 2
6 6 1
3 6
5 3
1 6
4 2
2 5
6 3 1
5 3
2 4
1 5
4 3
6 3
4 3 4
2 3
1 4
4 3
6 3 1
2 3
6 3
4 3
1 6
5 1
5 3 2
1 2
4 2
2 3
5 2
6 1 4
2 1
5 2
4 1
6 2
3 6
6 5 1
4 2
6 5
1 3
2 6
3 2
4 4 1
2 4
3 4
1 4
6 2 5
3 5
4 6
1 4
6 2
5 4
6 1 ...

output:

5 1 1 1 2 6 
3 1 1 1 1 6 
6 1 1 2 3 1 
6 1 1 1 1 1 
3 1 1 3 5 1 
3 1 3 4 
3 1 1 2 4 1 
3 1 4 5 2 
1 1 1 1 1 4 
5 1 1 2 5 1 
4 2 3 1 
2 1 1 1 1 5 
1 1 1 1 2 3 
3 1 1 1 1 1 
2 1 1 1 2 4 
3 1 2 5 6 4 
5 1 1 1 1 3 
1 1 1 3 5 
4 1 3 2 
3 1 1 1 4 
1 1 2 4 
3 1 3 2 
5 1 1 1 2 
5 1 2 3 1 
5 1 1 1 2 3 
4 1 1...

result:

FAIL Your output should be a permutation in test case 1.

Subtask #2:

score: 0
Skipped

Dependency #1:

0%

Subtask #3:

score: 0
Wrong Answer

Test #11:

score: 0
Wrong Answer
time: 169ms
memory: 20104kb

input:

14190
43 27 2
42 3
30 36
11 24
21 22
13 8
22 30
31 29
35 1
10 6
2 23
28 17
2 26
7 37
5 19
38 43
33 39
4 28
33 7
25 31
15 1
32 18
34 27
35 12
19 32
20 17
37 42
26 34
39 10
12 27
24 43
18 6
16 9
38 9
14 15
14 41
25 3
40 13
16 8
36 41
20 5
21 40
11 29
41 24 38
21 6
20 14
26 1
6 7
17 16
39 36
8 18
36 11...

output:

27 25 5 40 12 4 3 33 17 18 34 16 13 15 10 7 30 20 38 28 8 31 26 41 24 36 35 22 19 39 42 32 43 29 14 9 21 23 11 6 1 37 2 
24 16 1 22 8 20 5 25 2 10 13 11 15 18 37 34 28 4 32 41 14 33 17 12 3 23 30 35 9 29 40 26 6 7 21 19 31 27 39 36 38 
5 19 2 20 18 24 7 12 9 10 25 13 23 15 8 16 4 1 27 6 21 14 17 11 ...

result:

FAIL Your output should be a permutation in test case 284.

Subtask #4:

score: 0
Wrong Answer

Test #18:

score: 0
Wrong Answer
time: 773ms
memory: 18036kb

input:

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

output:

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

result:

FAIL Your output should be a permutation in test case 416.

Subtask #5:

score: 0
Time Limit Exceeded

Test #25:

score: 0
Time Limit Exceeded

input:

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

output:

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

result:


Subtask #6:

score: 10
Accepted

Test #34:

score: 10
Accepted
time: 5ms
memory: 18072kb

input:

10
1000 165 244
175 661
738 362
280 462
776 922
231 578
963 615
639 836
32 418
519 220
565 733
239 951
768 847
196 200
246 119
591 288
994 586
313 46
971 515
512 811
228 908
627 339
33 337
447 488
616 319
399 727
921 615
421 509
167 354
905 382
20 356
875 414
619 904
824 940
435 244
953 663
719 962
...

output:

165 1 2 3 4 227 776 7 8 980 10 11 12 13 14 15 16 17 18 285 295 448 22 440 24 25 26 27 321 29 30 31 32 231 34 176 36 557 335 39 245 870 42 43 44 45 46 47 48 49 50 51 52 53 54 310 405 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 462 76 951 78 79 80 81 82 83 6 85 86 87 88 89 109 371 427 93 913...

result:

ok Answer correct!

Test #35:

score: 10
Accepted
time: 5ms
memory: 17984kb

input:

10
1000 382 266
590 318
797 98
35 830
950 354
905 784
998 709
853 583
165 498
288 727
822 759
576 543
193 715
883 839
847 872
255 61
995 187
125 742
575 697
621 939
711 248
445 683
848 907
171 215
511 807
196 453
166 930
231 716
327 96
866 680
909 549
188 554
33 273
486 74
32 577
37 573
376 148
709 ...

output:

382 461 2 3 4 5 6 7 8 9 10 11 12 13 14 605 16 17 18 19 20 646 22 23 24 25 26 991 28 29 554 31 32 33 34 35 734 37 38 39 78 41 42 43 44 45 46 47 48 49 50 51 52 53 54 739 56 57 58 59 60 61 62 477 64 65 66 67 68 984 70 71 72 73 74 75 76 77 40 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 9...

result:

ok Answer correct!

Test #36:

score: 10
Accepted
time: 0ms
memory: 18068kb

input:

10
1000 252 455
479 592
266 350
335 8
117 54
580 751
999 484
73 339
97 325
96 336
629 247
947 425
374 458
666 716
498 402
859 866
361 441
627 365
372 505
456 485
376 379
422 416
72 498
489 369
211 537
909 508
12 23
523 738
714 383
556 447
548 773
521 353
76 581
555 780
565 148
672 15
570 768
888 39
...

output:

252 147 2 3 4 689 6 7 8 807 10 11 12 13 821 15 16 17 18 870 20 21 22 23 24 25 965 27 631 29 796 31 32 33 34 35 36 37 512 39 40 41 42 337 44 684 46 47 48 49 50 51 52 53 54 887 56 57 58 71 245 61 62 63 64 913 919 67 188 69 70 59 72 583 74 75 76 476 78 79 80 81 82 724 84 85 86 83 88 89 90 91 92 93 94 9...

result:

ok Answer correct!

Test #37:

score: 10
Accepted
time: 4ms
memory: 17940kb

input:

10
1000 304 234
651 949
290 646
953 375
867 994
71 810
114 466
924 223
583 869
947 766
627 169
100 616
847 801
20 138
886 364
320 941
866 188
408 606
762 366
842 325
934 184
122 918
736 773
348 289
876 770
913 227
274 176
727 87
18 280
305 595
774 884
441 582
328 711
829 836
891 503
45 971
804 500
6...

output:

304 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 290 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 782 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 10...

result:

ok Answer correct!

Test #38:

score: 10
Accepted
time: 2ms
memory: 20112kb

input:

10
1000 105 350
300 724
309 285
319 499
170 893
469 224
304 775
964 858
625 758
529 516
328 239
585 559
341 670
135 549
810 328
439 251
49 198
265 691
30 101
146 261
376 929
981 434
980 439
191 601
764 888
731 801
706 824
203 210
83 419
41 812
176 472
226 117
156 280
996 478
902 761
75 57
542 969
36...

output:

105 1 2 553 4 5 6 7 826 9 10 11 12 13 14 329 16 961 18 470 154 21 22 23 24 25 26 27 28 29 321 31 32 33 34 35 909 37 38 830 40 41 42 43 44 45 46 47 48 49 50 317 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 136 70 71 72 73 540 75 76 77 78 79 80 81 220 83 84 85 86 87 88 89 90 91 92 611 94 263 96 ...

result:

ok Answer correct!

Subtask #7:

score: 0
Skipped

Dependency #2:

0%