답안 #946905

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
946905 2024-03-15T07:23:33 Z mansur Amusement Park (JOI17_amusement_park) C++17
10 / 100
18 ms 3940 KB
#include "Joi.h"
#include<bits/stdc++.h>	

using namespace std;

#define all(a) a.begin(), a.end()                                                   
#define rall(a) a.rbegin(), a.rend()                 
#define sz(a) (int)a.size()
#define s second
#define f first
 
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

const int NN = 1e4;

int d[2][NN];
vector<int> g[NN];

int get(int x, int k, int n) {
	for (int i = 0; i < n; i++) d[k][i] = -1;
	queue<int> q;
	q.push(x);
	int mx = x;
	d[k][x] = 0;
	while (sz(q)) {
		x = q.front();
		q.pop();
		for (int to: g[x]) {
			if (d[k][to] == -1) {
				d[k][to] = d[k][x] + 1;
				q.push(to);
			}
		}
	}
	for (int i = 0; i < n; i++) {
		if (d[k][i] > d[k][mx]) {
			mx = i;
		}
	}
	return mx;
}

void Joi(int N, int M, int A[], int B[], long long X, int T) {	
	for (int i = 0; i < M; i++) {
		g[A[i]].push_back(B[i]);
		g[B[i]].push_back(A[i]);
	}
	int a = get(0, 0, N);
	get(a, 1, N);
	for (int i = 0; i < N; i++) {
		d[1][i] %= 60;
		MessageBoard(i, (X >> d[1][i] & 1));
	}
}
#include "Ioi.h"
#include<bits/stdc++.h>	

using namespace std;

#define all(a) a.begin(), a.end()                                                   
#define rall(a) a.rbegin(), a.rend()                 
#define sz(a) (int)a.size()
#define s second
#define f first
 
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

const int Nn = 1e4;

int dd[2][Nn], nxt[Nn], prv[Nn];
vector<int> gg[Nn];

int gett(int x, int k, int n) {
	for (int i = 0; i < n; i++) dd[k][i] = -1;
	queue<int> q;
	q.push(x);
	int s = x;
	dd[k][x] = 0;
	while (sz(q)) {
		x = q.front();
		q.pop();
		for (int to: gg[x]) {
			if (dd[k][to] == -1) {
				dd[k][to] = dd[k][x] + 1;
				prv[to] = x;
				q.push(to);
			}
		}
	}
	int mx = s;
	for (int i = 0; i < n; i++) {
		if (dd[k][i] > dd[k][mx]) {
			mx = i;
		}
	}
	int v = mx;
	while (mx != s) {
		nxt[prv[mx]] = mx;
		mx = prv[mx];	
	}
	return v;
}

long long Ioi(int N, int M, int A[], int B[], int p, int v, int T) {
	for (int i = 0; i < M; i++) {
		gg[A[i]].push_back(B[i]);
		gg[B[i]].push_back(A[i]);
	}
	int a = gett(0, 0, N);
	ll ans = 0;
	int b = gett(a, 1, N);
	//if ((a != 0 || b != N - 1) && (a != N - 1 || b != 0)) cout << 5 / 0;
	for (int i = 1; i <= 60; i++) {
		ll b = (dd[1][p] % 60);
		if (v) ans += (1ll << b);
		bool ok = 0;
		for (int to: gg[p]) {
			if (dd[1][to] + 1 == dd[1][p]) {
				v = Move(to);
				p = to;
				ok = 1;
				break;
			}
		}  
		if (!ok) {
			ans = 0;
			for (ll j = 0; j < 60; j++) {
				ans += (1ll << j) * v;
				v = Move(nxt[p]);
				p = nxt[p];
			}
			return ans;
		}
	}
	return ans;
}

Compilation message

Ioi.cpp: In function 'long long int Ioi(int, int, int*, int*, int, int, int)':
Ioi.cpp:59:6: warning: unused variable 'b' [-Wunused-variable]
   59 |  int b = gett(a, 1, N);
      |      ^
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 1296 KB Wrong Answer [7]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 17 ms 3856 KB Wrong Answer [7]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1304 KB Output is correct
2 Correct 1 ms 1688 KB Output is correct
3 Correct 1 ms 1308 KB Output is correct
4 Correct 2 ms 1328 KB Output is correct
5 Correct 2 ms 1332 KB Output is correct
6 Correct 3 ms 1336 KB Output is correct
7 Correct 2 ms 1332 KB Output is correct
8 Correct 2 ms 1320 KB Output is correct
9 Correct 8 ms 2784 KB Output is correct
10 Correct 9 ms 2780 KB Output is correct
11 Correct 8 ms 2776 KB Output is correct
12 Correct 0 ms 1296 KB Output is correct
13 Correct 0 ms 1308 KB Output is correct
14 Correct 1 ms 1296 KB Output is correct
15 Correct 1 ms 1292 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 17 ms 3940 KB Wrong Answer [7]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 18 ms 3504 KB Wrong Answer [7]
2 Halted 0 ms 0 KB -