답안 #24881

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
24881 2017-06-16T18:44:12 Z Hiasat 열대 식물원 (Tropical Garden) (IOI11_garden) C++14
69 / 100
215 ms 34116 KB
#include "garden.h"
#include "gardenlib.h"
#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int> pii;

const int MX = 150011;
vector<int> adj[MX * 2], g[MX * 2];

int need[MX * 2][2];

void connect(int u , int v, int N) {
	if (adj[u][0] == v || adj[u][0] == v - N)
		u = u + N;
	g[u].push_back(v);
}
void dfs(int u , int cost, int it) {
	if (need[u][it] != -1)
		return;
	if (cost)
		need[u][it] = cost;
	for (int i = 0; i < g[u].size(); ++i) {
		dfs(g[u][i], cost + 1, it);
	}
}
void count_routes(int N, int M, int P, int R[][2], int Q, int G[]) {
	memset(need, -1, sizeof need);
	for (int i = 0; i < M; ++i) {
		adj[R[i][0]].push_back(R[i][1]);
		adj[R[i][1]].push_back(R[i][0]);
	}
	for (int i = 0; i < N; ++i) {
		while (adj[i].size() > 2)
			adj[i].pop_back();
		if (adj[i].size())
			connect(adj[i][0], i, N);
		if (adj[i].size()) {
			if (adj[i].size() == 2) {
				connect(adj[i][1], i + N, N);
			} else {
				connect(adj[i][0], i + N, N);
			}
		}
	}
	dfs(P, 0, 0);
	dfs(P + N, 0, 1);
	for (int k = 0 ; k < Q ; k++) {
		int res = 0;
		for (int i = 0; i < N; ++i) {
			for (int it = 0 ; it < 2 ; it++) {
				int rem = G[k];
				if(rem < need[i][it])
					continue;
				if(need[i][it] == -1)
					continue;
				rem -= need[i][it];

				if(rem == 0 || (need[P+it*N][it] != -1 && rem%need[P+it*N][it] == 0)){
					res++;
				}
			}
		}
		answer(res);
	}
}


Compilation message

garden.cpp: In function 'void dfs(int, int, int)':
garden.cpp:24:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < g[u].size(); ++i) {
                  ~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 17 ms 16860 KB Output is correct
2 Correct 18 ms 16824 KB Output is correct
3 Correct 18 ms 16948 KB Output is correct
4 Correct 17 ms 16764 KB Output is correct
5 Correct 17 ms 16752 KB Output is correct
6 Correct 18 ms 16988 KB Output is correct
7 Correct 17 ms 16728 KB Output is correct
8 Correct 19 ms 16772 KB Output is correct
9 Correct 21 ms 17112 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 17 ms 16860 KB Output is correct
2 Correct 18 ms 16824 KB Output is correct
3 Correct 18 ms 16948 KB Output is correct
4 Correct 17 ms 16764 KB Output is correct
5 Correct 17 ms 16752 KB Output is correct
6 Correct 18 ms 16988 KB Output is correct
7 Correct 17 ms 16728 KB Output is correct
8 Correct 19 ms 16772 KB Output is correct
9 Correct 21 ms 17112 KB Output is correct
10 Correct 17 ms 16784 KB Output is correct
11 Correct 32 ms 18904 KB Output is correct
12 Correct 56 ms 20216 KB Output is correct
13 Correct 75 ms 34116 KB Output is correct
14 Correct 176 ms 27540 KB Output is correct
15 Correct 213 ms 27732 KB Output is correct
16 Correct 166 ms 24912 KB Output is correct
17 Correct 163 ms 23924 KB Output is correct
18 Correct 54 ms 20172 KB Output is correct
19 Correct 169 ms 27516 KB Output is correct
20 Correct 215 ms 27860 KB Output is correct
21 Correct 169 ms 25728 KB Output is correct
22 Correct 157 ms 24720 KB Output is correct
23 Correct 169 ms 29024 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 17 ms 16860 KB Output is correct
2 Correct 18 ms 16824 KB Output is correct
3 Correct 18 ms 16948 KB Output is correct
4 Correct 17 ms 16764 KB Output is correct
5 Correct 17 ms 16752 KB Output is correct
6 Correct 18 ms 16988 KB Output is correct
7 Correct 17 ms 16728 KB Output is correct
8 Correct 19 ms 16772 KB Output is correct
9 Correct 21 ms 17112 KB Output is correct
10 Correct 17 ms 16784 KB Output is correct
11 Correct 32 ms 18904 KB Output is correct
12 Correct 56 ms 20216 KB Output is correct
13 Correct 75 ms 34116 KB Output is correct
14 Correct 176 ms 27540 KB Output is correct
15 Correct 213 ms 27732 KB Output is correct
16 Correct 166 ms 24912 KB Output is correct
17 Correct 163 ms 23924 KB Output is correct
18 Correct 54 ms 20172 KB Output is correct
19 Correct 169 ms 27516 KB Output is correct
20 Correct 215 ms 27860 KB Output is correct
21 Correct 169 ms 25728 KB Output is correct
22 Correct 157 ms 24720 KB Output is correct
23 Correct 169 ms 29024 KB Output is correct
24 Incorrect 18 ms 16760 KB Output isn't correct
25 Halted 0 ms 0 KB -