QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#466251#1878. No Rest for the WickedGenshinImpactsFaultWA 2ms26232kbC++141.8kb2024-07-07 17:12:012024-07-07 17:12:01

Judging History

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

  • [2024-07-07 17:12:01]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:26232kb
  • [2024-07-07 17:12:01]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
const int N = 400010;
int n, m;
int c[N], t[N], s[N];
int id[N];
struct Edge {
	int x, y, w;
}; Edge edge[N];
int tot, fa[N];
vector<int> e[N];
int dfn[N], low[N], idx = 0, f[N][20], dep[N];
int ans[N];
set<pair<int, int> > st;

int find(int x) {
	return x == fa[x] ? x : fa[x] = find(fa[x]);
}
void dfs(int u, int ff) {
	dep[u] = dep[ff] + 1, f[u][0] = ff;
	for(int i = 1; i <= 19; i++) f[u][i] = f[f[u][i - 1]][i - 1];
	dfn[u] = ++idx;
	if(u <= n) st.insert({dfn[u], u});
	for(auto v : e[u]) dfs(v, u);
	low[u] = idx;
}
int main() {
	ios::sync_with_stdio(0); cin.tie(nullptr);
	cin >> n >> m;
	for(int i = 1; i <= n; i++) {
		cin >> c[i] >> t[i] >> s[i];
		id[i] = i;
	}
	c[n + 1] = 1e9 + 10, t[n + 1] = 0, s[n + 1] = 0;
	sort(id + 1, id + n + 1, [](int x, int y) { return s[x] > s[y]; });
	for(int i = 1; i <= m; i++) {
		cin >> edge[i].x >> edge[i].y;
		edge[i].w = max(c[edge[i].x], c[edge[i].y]);
	}
	for(int i = 1; i <= n; i++) {
		edge[m + i] = {i, n + 1, (int)1e9 + 10};
	}
	m += n;
	sort(edge + 1, edge + m + 1, [](Edge x, Edge y) { return x.w < y.w; });
	tot = n + 1;
	for(int i = 1; i <= n + 1; i++) fa[i] = i;
	for(int i = 1; i <= m; i++) {
		int x = edge[i].x, y = edge[i].y, w = edge[i].w;
		x = find(x), y = find(y); if(x == y) continue;
		++tot, fa[x] = fa[y] = fa[tot] = tot, c[tot] = w;
		e[tot].push_back(x), e[tot].push_back(y);
	}
	dfs(tot, 0);
	for(int i = 1; i <= n; i++) {
		int u = id[i], x = u;
		for(int j = 19; ~j; j--) {
			if(!f[x][j]) continue;
			if(c[f[x][j]] <= t[u]) x = f[x][j];
		}
		for(;;) {
			set<pair<int, int> >::iterator it = st.lower_bound({dfn[x], 0});
			if(it == st.end() || it->first > low[x]) break;
			ans[it->second] = s[u];
			st.erase(it);
		}
	}
	for(int i = 1; i <= n; i++) cout << ans[i] << " \n"[i == n];
	return 0;
}

详细

Test #1:

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

input:

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

output:

2 4 2 3

result:

ok 4 number(s): "2 4 2 3"

Test #2:

score: 0
Accepted
time: 2ms
memory: 26148kb

input:

1 0
138088047 507565360 682493255

output:

682493255

result:

ok 1 number(s): "682493255"

Test #3:

score: 0
Accepted
time: 0ms
memory: 24104kb

input:

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

output:

4 4 4 4

result:

ok 4 number(s): "4 4 4 4"

Test #4:

score: 0
Accepted
time: 0ms
memory: 26224kb

input:

4 6
178072496 839649317 45448733
194708659 935253395 946862151
18249835 428083054 205076387
264987407 972905801 813257839
1 2
1 3
1 4
2 3
2 4
3 4

output:

946862151 946862151 946862151 946862151

result:

ok 4 number(s): "946862151 946862151 946862151 946862151"

Test #5:

score: 0
Accepted
time: 0ms
memory: 26216kb

input:

6 9
28300078 870529222 753188708
536298772 594473950 960983978
529901549 892644015 629235196
243957096 964819865 557992404
816732311 926011948 125114736
542880646 854233712 893836623
1 4
1 6
2 3
2 5
2 6
3 4
3 5
4 5
5 6

output:

960983978 960983978 960983978 960983978 893836623 960983978

result:

ok 6 numbers

Test #6:

score: 0
Accepted
time: 0ms
memory: 26136kb

input:

8 12
145668143 803690704 831047661
521729328 779388601 536431978
431184019 964406648 502003747
576412706 849278976 294536686
192427822 686389291 757517237
233074855 931142020 210401181
471103022 766254684 616437478
428586523 540241082 342381939
1 2
1 3
1 4
1 6
1 7
1 8
2 4
2 6
2 8
3 4
4 6
4 7

output:

831047661 831047661 831047661 831047661 757517237 831047661 831047661 831047661

result:

ok 8 numbers

Test #7:

score: -100
Wrong Answer
time: 2ms
memory: 26216kb

input:

10 15
655656582 957993326 217780522
363058173 566585702 743894263
647838538 859340013 196392035
640149142 953472346 198526606
702268047 718140369 962437830
124896500 917182037 295362562
192263727 942734873 850558512
772259555 981713859 93132130
238923474 989797499 19116545
409753844 743389814 382909...

output:

962437830 962437830 962437830 962437830 962437830 295362562 962437830 850558512 962437830 962437830

result:

wrong answer 8th numbers differ - expected: '93132130', found: '850558512'