Submission #95053

# Submission time Handle Problem Language Result Execution time Memory
95053 2019-01-27T07:22:57 Z ImaniAm Bitaro’s Party (JOI18_bitaro) C++14
0 / 100
10 ms 7544 KB
#include <bits/stdc++.h>

using namespace std;

#define pb push_back

typedef pair <int, int> pii;

const int maxn = 1e5 + 10, maxm = 2e5 + 10, sq = 320;
int n, m, q, ans[maxn], size[maxn], h[maxn], input[maxn];
vector <pii> mx[maxn], vec;
vector <int> in[maxn];
bitset <maxn> mark;

int main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cin >> n >> m >> q;
	for (int i = 0, v, u; i < m; ++i) {
		cin >> v >> u;
		in[--u].pb(--v);
	}
	for (int i = 0; i < n; ++i) {
		mx[i].pb({-1, i});
		for (auto j: in[i]) {
			int se = mx[i].size(), se2 = mx[j].size();
			vec.resize(se + se2);
			merge(mx[i].begin(), mx[i].end(), mx[j].begin(), mx[j].end(), vec.begin());
			if (int(vec.size()) > sq)
				vec.resize(sq);
			mx[i].swap(vec);
		}
		size[i] = mx[i].size();
		for (int j = 0; j < size[i]; ++j)
			mx[i][j].first++;
	}
	for (int i = 0, v, num; i < q; ++i) {
		cin >> v >> num; --v;
		for (int j = 0; j < num; ++j) {
			cin >> input[j];
			mark[--input[j]] = true;
		}
		int ans = -1;
		for (int j = 0; j < size[v]; ++j)
			if (!mark[mx[v][j].second])
				ans = mx[v][j].first;
		if (ans == -1) {
			memset(h, -1, sizeof(h));
			h[v] = 0;
			for (int j = v; ~j; --j) {
				if (!mark[j])
					ans = max(ans, h[j]);
				for (auto u: in[j])
					h[u] = max(h[u], h[j] + 1);
			}
		}
		cout << ans << '\n';
		for (int j = 0; j < num; ++j)
			mark[input[j]] = false;
	}
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 6 ms 5112 KB Output is correct
2 Correct 6 ms 5368 KB Output is correct
3 Correct 6 ms 5496 KB Output is correct
4 Correct 6 ms 5496 KB Output is correct
5 Correct 10 ms 7544 KB Output is correct
6 Incorrect 10 ms 7260 KB Output isn't correct
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 5112 KB Output is correct
2 Correct 6 ms 5368 KB Output is correct
3 Correct 6 ms 5496 KB Output is correct
4 Correct 6 ms 5496 KB Output is correct
5 Correct 10 ms 7544 KB Output is correct
6 Incorrect 10 ms 7260 KB Output isn't correct
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 5112 KB Output is correct
2 Correct 6 ms 5368 KB Output is correct
3 Correct 6 ms 5496 KB Output is correct
4 Correct 6 ms 5496 KB Output is correct
5 Correct 10 ms 7544 KB Output is correct
6 Incorrect 10 ms 7260 KB Output isn't correct
7 Halted 0 ms 0 KB -