답안 #432478

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
432478 2021-06-18T10:34:10 Z milleniumEeee 기지국 (IOI20_stations) C++17
5 / 100
960 ms 844 KB
#ifndef EVAL
#include "stub.cpp"
#endif
#include "stations.h"
 
#include <bits/stdc++.h>
#define fr first
#define sc second
#define pii pair<int, int>
#define pb push_back
#define szof(s) (int)s.size()
#define all(s) s.begin(), s.end()
 
using namespace std;
 
const int MAXN = 1005;

vector <int> g[MAXN];
int cnt[MAXN];

void clean() {
	for (int i = 0; i < MAXN; i++) {
		cnt[i] = 0;
	}
	for (int i = 0; i < MAXN; i++) {
		g[i].clear();
	}
}

void dfs(int v, int par, vector <int> &order) {
	order.pb(v);
	for (int to : g[v]) {
		if (to != par) {
			dfs(to, v, order);
		}
	}
}

vector<int> label(int n, int k, vector<int> u, vector<int> v) {
	clean(); // на всякий случай
	for (int i = 0; i <= n - 2; i++) {
		int x = u[i];
		int y = v[i];
		g[x].pb(y);
		g[y].pb(x);
		cnt[x]++;
		cnt[y]++;
	}
	int root = 0;
	bool flag = 0;
	for (int i = 0; i < n; i++) {
		if (cnt[i] >= 3) {
			root = i;
			flag = 1;
		}
	}
	vector <int> labels(n);
	if (flag) {
		labels[root] = 1e9;
		int sub = 1;
		for (int son : g[root]) {
			vector <int> order;
			dfs(son, root, order);
			int id = sub * 1000;
			for (int el : order) {
				labels[el] = id++;
			}
			sub++;
		}
	}
	else { // просто бамбук
		int up = -1;
		for (int i = 0; i < n; i++) {
			if (cnt[i] == 1) {
				up = i;
				break;
			}
		}
		vector <int> order;
		dfs(up, -1, order);
		int id = 0;
		for (int el : order) {
			labels[el] = id++;
		}
	}
	return labels;
}
 
int find_next_station(int s, int t, vector<int> c) {
	if (s == 1e9) {
		return t / 1000 * 1000;
	}
	if (s / 1000 == t / 1000) {
		if (s < t) {
			return s + 1;
		} else {
			return s - 1;
		}
	} else {
		if (s % 1000 == 0) {
			return 1e9;
		} else {
			return s - 1;
		}
	}
}
# 결과 실행 시간 메모리 Grader output
1 Correct 557 ms 656 KB Output is correct
2 Correct 441 ms 528 KB Output is correct
3 Correct 849 ms 400 KB Output is correct
4 Correct 610 ms 400 KB Output is correct
5 Correct 624 ms 516 KB Output is correct
6 Correct 468 ms 516 KB Output is correct
7 Correct 426 ms 508 KB Output is correct
8 Correct 3 ms 468 KB Output is correct
9 Correct 4 ms 468 KB Output is correct
10 Correct 2 ms 544 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 308 KB Invalid labels (values out of range). scenario=0, k=1000, vertex=0, label=1007
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 554 ms 640 KB Output is correct
2 Correct 442 ms 520 KB Output is correct
3 Correct 835 ms 400 KB Output is correct
4 Correct 708 ms 512 KB Output is correct
5 Correct 533 ms 512 KB Output is correct
6 Correct 421 ms 528 KB Output is correct
7 Correct 468 ms 592 KB Output is correct
8 Correct 3 ms 476 KB Output is correct
9 Correct 5 ms 468 KB Output is correct
10 Correct 2 ms 468 KB Output is correct
11 Incorrect 1 ms 200 KB Invalid labels (values out of range). scenario=1, k=1000000, vertex=1, label=1000000000
12 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 960 ms 496 KB Output is correct
2 Correct 621 ms 400 KB Output is correct
3 Correct 556 ms 536 KB Output is correct
4 Correct 2 ms 468 KB Output is correct
5 Correct 4 ms 468 KB Output is correct
6 Correct 3 ms 468 KB Output is correct
7 Correct 619 ms 400 KB Output is correct
8 Correct 837 ms 404 KB Output is correct
9 Correct 633 ms 400 KB Output is correct
10 Correct 586 ms 400 KB Output is correct
11 Incorrect 6 ms 504 KB Wrong query response.
12 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 530 ms 520 KB Output is correct
2 Correct 467 ms 844 KB Output is correct
3 Correct 847 ms 400 KB Output is correct
4 Correct 681 ms 516 KB Output is correct
5 Correct 571 ms 528 KB Output is correct
6 Correct 467 ms 636 KB Output is correct
7 Correct 481 ms 600 KB Output is correct
8 Correct 4 ms 476 KB Output is correct
9 Correct 5 ms 468 KB Output is correct
10 Correct 2 ms 468 KB Output is correct
11 Incorrect 467 ms 528 KB Wrong query response.
12 Halted 0 ms 0 KB -