답안 #432472

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
432472 2021-06-18T10:29:57 Z milleniumEeee 기지국 (IOI20_stations) C++17
5 / 100
914 ms 648 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] = 0;
		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 / 1000 == t / 1000) {
		if (s < t) {
			return s + 1;
		} else {
			return s - 1;
		}
	} else {
		if (s % 1000 == 0) {
			return 0;
		} else {
			return s - 1;
		}
	}
}
# 결과 실행 시간 메모리 Grader output
1 Correct 505 ms 648 KB Output is correct
2 Correct 425 ms 512 KB Output is correct
3 Correct 863 ms 500 KB Output is correct
4 Correct 640 ms 644 KB Output is correct
5 Correct 551 ms 400 KB Output is correct
6 Correct 439 ms 520 KB Output is correct
7 Correct 427 ms 520 KB Output is correct
8 Correct 3 ms 468 KB Output is correct
9 Correct 6 ms 468 KB Output is correct
10 Correct 2 ms 476 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 316 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 537 ms 640 KB Output is correct
2 Correct 424 ms 528 KB Output is correct
3 Correct 869 ms 472 KB Output is correct
4 Correct 681 ms 528 KB Output is correct
5 Correct 592 ms 400 KB Output is correct
6 Correct 438 ms 528 KB Output is correct
7 Correct 414 ms 528 KB Output is correct
8 Correct 4 ms 476 KB Output is correct
9 Correct 6 ms 428 KB Output is correct
10 Correct 3 ms 468 KB Output is correct
11 Incorrect 504 ms 512 KB Wrong query response.
12 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 914 ms 400 KB Output is correct
2 Correct 637 ms 400 KB Output is correct
3 Correct 623 ms 400 KB Output is correct
4 Correct 4 ms 468 KB Output is correct
5 Correct 7 ms 468 KB Output is correct
6 Correct 3 ms 468 KB Output is correct
7 Incorrect 595 ms 508 KB Wrong query response.
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 479 ms 644 KB Output is correct
2 Correct 454 ms 508 KB Output is correct
3 Correct 843 ms 400 KB Output is correct
4 Correct 674 ms 588 KB Output is correct
5 Correct 563 ms 516 KB Output is correct
6 Correct 447 ms 516 KB Output is correct
7 Correct 429 ms 520 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 468 KB Output is correct
11 Incorrect 429 ms 528 KB Wrong query response.
12 Halted 0 ms 0 KB -