Submission #24879

# Submission time Handle Problem Language Result Execution time Memory
24879 2017-06-16T18:38:41 Z Hiasat Tropical Garden (IOI11_garden) C++14
69 / 100
243 ms 60576 KB
#include "garden.h"
#include "gardenlib.h"
#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int> pii;

const int MX = 500001;
vector<int> adj[MX], 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 p = 0 ; p < Q ; p++) {
		int res = 0;
		for (int i = 0; i < N; ++i) {
			for (int it = 0 ; it < 2 ; it++) {
				int rem = G[p];
				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:25:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < g[u].size(); ++i) {
                  ~~^~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 42 ms 43580 KB Output is correct
2 Correct 42 ms 43556 KB Output is correct
3 Correct 42 ms 43468 KB Output is correct
4 Correct 41 ms 43324 KB Output is correct
5 Correct 41 ms 43440 KB Output is correct
6 Correct 42 ms 43604 KB Output is correct
7 Correct 42 ms 43384 KB Output is correct
8 Correct 43 ms 43512 KB Output is correct
9 Correct 45 ms 43628 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 42 ms 43580 KB Output is correct
2 Correct 42 ms 43556 KB Output is correct
3 Correct 42 ms 43468 KB Output is correct
4 Correct 41 ms 43324 KB Output is correct
5 Correct 41 ms 43440 KB Output is correct
6 Correct 42 ms 43604 KB Output is correct
7 Correct 42 ms 43384 KB Output is correct
8 Correct 43 ms 43512 KB Output is correct
9 Correct 45 ms 43628 KB Output is correct
10 Correct 43 ms 43384 KB Output is correct
11 Correct 55 ms 45472 KB Output is correct
12 Correct 78 ms 46776 KB Output is correct
13 Correct 98 ms 60576 KB Output is correct
14 Correct 199 ms 53888 KB Output is correct
15 Correct 231 ms 54412 KB Output is correct
16 Correct 191 ms 51656 KB Output is correct
17 Correct 168 ms 50688 KB Output is correct
18 Correct 76 ms 46924 KB Output is correct
19 Correct 190 ms 53960 KB Output is correct
20 Correct 243 ms 54212 KB Output is correct
21 Correct 194 ms 51840 KB Output is correct
22 Correct 183 ms 51076 KB Output is correct
23 Correct 203 ms 55376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 42 ms 43580 KB Output is correct
2 Correct 42 ms 43556 KB Output is correct
3 Correct 42 ms 43468 KB Output is correct
4 Correct 41 ms 43324 KB Output is correct
5 Correct 41 ms 43440 KB Output is correct
6 Correct 42 ms 43604 KB Output is correct
7 Correct 42 ms 43384 KB Output is correct
8 Correct 43 ms 43512 KB Output is correct
9 Correct 45 ms 43628 KB Output is correct
10 Correct 43 ms 43384 KB Output is correct
11 Correct 55 ms 45472 KB Output is correct
12 Correct 78 ms 46776 KB Output is correct
13 Correct 98 ms 60576 KB Output is correct
14 Correct 199 ms 53888 KB Output is correct
15 Correct 231 ms 54412 KB Output is correct
16 Correct 191 ms 51656 KB Output is correct
17 Correct 168 ms 50688 KB Output is correct
18 Correct 76 ms 46924 KB Output is correct
19 Correct 190 ms 53960 KB Output is correct
20 Correct 243 ms 54212 KB Output is correct
21 Correct 194 ms 51840 KB Output is correct
22 Correct 183 ms 51076 KB Output is correct
23 Correct 203 ms 55376 KB Output is correct
24 Incorrect 43 ms 43448 KB Output isn't correct
25 Halted 0 ms 0 KB -