답안 #835942

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
835942 2023-08-24T00:00:36 Z JustAmethyst 기지국 (IOI20_stations) C++17
52.3206 / 100
815 ms 784 KB
#include "stations.h"
#include <bits/stdc++.h>
#define sz(x) (int)(x.size())
using namespace std;

const int N = 1000;
vector<int> edges[N];
vector<int> tin(N), tout(N);
int t1, t2;

void dfs(int x, int p) {
	int y;
	tin[x] = t1;
	++t1;

	while (!edges[x].empty()) {
		y = edges[x].back();
		edges[x].pop_back();
		if (y != p) {
			dfs(y, x);
		}
	}
	tout[x] = t2;
	++t2;
}

vector<int> label(int n, int k, vector<int> u, vector<int> v) {
	vector<int> codes(n);
	t1 = 0, t2 = 0;

	for (int i = 0; i < n-1; ++i) {
		edges[u[i]].push_back(v[i]);
		edges[v[i]].push_back(u[i]);
	}

	dfs(0, -1);
	for (int i = 0; i < n; ++i) {
		// cout << sz(edges[i]) << "\n";
		codes[i] = tin[i]*1000 + tout[i];
	}
	return codes;
}

int find_next_station(int s, int e, vector<int> c) {
	int sin = s/1000, sout = s % 1000;
	int ein = e/1000, eout = e % 1000;
	if (ein < sin || eout > sout) {
		for (int x : c) {
			if ((x/1000) <= sin) {
				return x;
			}
		}
	}
	for (int x : c) {
		if ((x/1000) > sin && (x/1000) <= ein && (x%1000) >= eout) {
			return x;
		}
	}

	return -1;
}

// void solve() {
// 	vector<int> labels = label(3, 1000000000, {2, 1}, {0, 0});
// 	for (auto x : labels) {
// 		cout << x << " ";
// 		cout << "\n";
// 	}
// 	cout << "\n";

// 	cout << find_next_station(labels[1], labels[0], {labels[0]}) << "\n";
// 	cout << find_next_station(labels[1], labels[2], {labels[0]}) << "\n";
// 	cout << find_next_station(labels[2], labels[1], {labels[0]}) << "\n";
// 	cout << find_next_station(labels[0], labels[2], {labels[2], labels[1]}) << "\n";
// 	cout << find_next_station(labels[2], labels[0], {labels[0]}) << "\n";
// 	cout << find_next_station(labels[0], labels[1], {labels[2], labels[1]}) << "\n";

// 	// cout << "\n";
// 	// cout << find_next_station(1003, 4001, {2000, 3002, 4}) << "\n";
// }

// int main() {
// 	ios_base::sync_with_stdio(0);
// 	cin.tie(0);
// 	// int t;
// 	// cin >> t;
// 	// while (t--) 
// 	solve();
	
// 	return 0;
// }


// static int max_label = 0;
// static int r, n, k, q;
// static std::vector<int> u, v, labels, answers;
// static std::map<int, int> reverse_labels;
// static std::vector<std::vector<int>> adjlist;
// static int s, t, w;
// static std::vector<int> c;

// int main() {
// 	assert(scanf("%d", &r) == 1);
// 	for (int tc = 0; tc < r; tc++) {
// 		assert(scanf("%d%d", &n, &k) == 2);
// 		u.resize(n - 1);
// 		v.resize(n - 1);
// 		adjlist.clear();
// 		adjlist.resize(n);
// 		for (int i = 0; i < n - 1; i++) {
// 			assert(scanf("%d%d", &u[i], &v[i]) == 2);
// 			adjlist[u[i]].push_back(v[i]);
// 			adjlist[v[i]].push_back(u[i]);
// 		}
// 		labels = label(n, k, u, v);
// 		if ((int)labels.size() != n) {
// 			printf("Number of labels not equal to %d\n", n);
// 			exit(0);
// 		}
// 		reverse_labels.clear();
// 		for (int i = 0; i < n; i++) {
// 			if (labels[i] < 0 || labels[i] > k) {
// 				printf("Label not in range 0 to %d\n", k);
// 				exit(0);
// 			}
// 			if (reverse_labels.find(labels[i]) != reverse_labels.end()) {
// 				printf("Labels not unique\n");
// 				exit(0);
// 			}
// 			reverse_labels[labels[i]] = i;
// 			if (labels[i] > max_label) {
// 				max_label = labels[i];
// 			}
// 		}
// 		assert(scanf("%d", &q) == 1);
// 		for (int i = 0; i < q; i++) {
// 			assert(scanf("%d%d%d", &s, &t, &w) == 3);
// 			c.clear();
// 			for (int v : adjlist[s]) {
// 				c.push_back(labels[v]);
// 			}
// 			std::sort(c.begin(), c.end());
// 			int answer = find_next_station(labels[s], labels[t], c);
// 			if (!std::binary_search(c.begin(), c.end(), answer)) {
// 				printf("Label %d returned by find_next_station not found in c\n", answer);
// 				exit(0);
// 			}
// 			answers.push_back(reverse_labels[answer]);
// 		}
// 	}
// 	printf("%d\n", max_label);
// 	for (int index : answers) {
// 		printf("%d\n", index);
// 	}
// 	exit(0);
// }
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 336 KB Invalid labels (values out of range). scenario=0, k=1000, vertex=1, label=5003
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 336 KB Invalid labels (values out of range). scenario=0, k=1000, vertex=1, label=485994
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 342 ms 652 KB Output is correct
2 Correct 309 ms 676 KB Output is correct
3 Correct 691 ms 420 KB Output is correct
4 Correct 574 ms 416 KB Output is correct
5 Correct 483 ms 544 KB Output is correct
6 Correct 412 ms 548 KB Output is correct
7 Correct 320 ms 548 KB Output is correct
8 Correct 2 ms 740 KB Output is correct
9 Correct 3 ms 628 KB Output is correct
10 Correct 0 ms 748 KB Output is correct
11 Correct 574 ms 416 KB Output is correct
12 Correct 299 ms 692 KB Output is correct
13 Correct 433 ms 656 KB Output is correct
14 Correct 363 ms 544 KB Output is correct
15 Correct 31 ms 748 KB Output is correct
16 Correct 46 ms 728 KB Output is correct
17 Correct 100 ms 728 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 805 ms 416 KB Output is correct
2 Correct 631 ms 416 KB Output is correct
3 Correct 548 ms 676 KB Output is correct
4 Correct 2 ms 492 KB Output is correct
5 Correct 3 ms 500 KB Output is correct
6 Correct 0 ms 492 KB Output is correct
7 Correct 465 ms 544 KB Output is correct
8 Correct 616 ms 416 KB Output is correct
9 Correct 451 ms 420 KB Output is correct
10 Correct 536 ms 728 KB Output is correct
11 Correct 5 ms 620 KB Output is correct
12 Correct 5 ms 628 KB Output is correct
13 Correct 3 ms 500 KB Output is correct
14 Correct 2 ms 620 KB Output is correct
15 Correct 2 ms 620 KB Output is correct
16 Correct 394 ms 420 KB Output is correct
17 Correct 382 ms 548 KB Output is correct
18 Correct 429 ms 416 KB Output is correct
19 Correct 408 ms 420 KB Output is correct
20 Correct 490 ms 612 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Partially correct 407 ms 644 KB Partially correct
2 Partially correct 360 ms 728 KB Partially correct
3 Correct 815 ms 420 KB Output is correct
4 Partially correct 526 ms 544 KB Partially correct
5 Partially correct 541 ms 416 KB Partially correct
6 Partially correct 399 ms 548 KB Partially correct
7 Partially correct 428 ms 544 KB Partially correct
8 Partially correct 2 ms 500 KB Partially correct
9 Partially correct 2 ms 624 KB Partially correct
10 Partially correct 0 ms 620 KB Partially correct
11 Partially correct 306 ms 544 KB Partially correct
12 Partially correct 354 ms 544 KB Partially correct
13 Correct 679 ms 544 KB Output is correct
14 Partially correct 468 ms 420 KB Partially correct
15 Partially correct 496 ms 420 KB Partially correct
16 Partially correct 256 ms 672 KB Partially correct
17 Partially correct 497 ms 416 KB Partially correct
18 Partially correct 389 ms 664 KB Partially correct
19 Partially correct 424 ms 652 KB Partially correct
20 Partially correct 371 ms 544 KB Partially correct
21 Partially correct 51 ms 752 KB Partially correct
22 Partially correct 75 ms 728 KB Partially correct
23 Partially correct 74 ms 704 KB Partially correct
24 Partially correct 3 ms 748 KB Partially correct
25 Partially correct 4 ms 500 KB Partially correct
26 Partially correct 4 ms 636 KB Partially correct
27 Partially correct 2 ms 492 KB Partially correct
28 Partially correct 1 ms 504 KB Partially correct
29 Partially correct 359 ms 420 KB Partially correct
30 Partially correct 463 ms 548 KB Partially correct
31 Partially correct 405 ms 420 KB Partially correct
32 Partially correct 361 ms 544 KB Partially correct
33 Partially correct 419 ms 416 KB Partially correct
34 Partially correct 242 ms 548 KB Partially correct
35 Partially correct 315 ms 664 KB Partially correct
36 Partially correct 330 ms 544 KB Partially correct
37 Partially correct 322 ms 784 KB Partially correct
38 Partially correct 307 ms 660 KB Partially correct
39 Partially correct 349 ms 744 KB Partially correct
40 Partially correct 411 ms 664 KB Partially correct
41 Partially correct 258 ms 660 KB Partially correct
42 Partially correct 35 ms 744 KB Partially correct
43 Partially correct 86 ms 700 KB Partially correct
44 Partially correct 117 ms 572 KB Partially correct
45 Partially correct 107 ms 544 KB Partially correct
46 Partially correct 270 ms 548 KB Partially correct
47 Partially correct 208 ms 548 KB Partially correct
48 Partially correct 58 ms 700 KB Partially correct
49 Partially correct 51 ms 684 KB Partially correct