Submission #125518

# Submission time Handle Problem Language Result Execution time Memory
125518 2019-07-05T14:51:51 Z hugo_pm Bitaro’s Party (JOI18_bitaro) C++17
7 / 100
2000 ms 166492 KB
#include <bits/stdc++.h>
using namespace std;

#define form2(i, a, b) for (int i = (a); i < (b); ++i)
#define ford2(i, a, b) for (int i = (a-1); i >= (b); --i)
#define form(i, n) form2(i, 0, n)
#define ford(i, n) ford2(i, n, 0)

#define chmax(x, v) x = max(x, (v))
#define chmin(x, v) x = min(x, (v))
#define fi first
#define se second

const long long BIG = 1000000000000000000LL;

typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;

void solve();
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	solve();
	return 0;
}

const int borne = (int)(1e5) + 5;
const int lowCte = 120;
const int highCte = 130;

vector<int> revAdj[borne];
vector<pii> meil[borne];

int nbVilles, nbCan, nbReq;

int sk[borne];
int vu22[borne]; int tp22 = 0;
int tps = 0;

int dp[borne];

void solve()
{
	cin >> nbVilles >> nbCan >> nbReq;
	form(i, nbCan) {
		int u, v; cin >> u >> v; --u; --v;
		revAdj[v].push_back(u);
	}

	form(i, nbVilles) {
		meil[i].push_back({0, i});
		for (int vo : revAdj[i]) {
			for (auto tr : meil[vo]) {
				meil[i].push_back({tr.fi+1, tr.se});
			}
		}
		vector<pii> ow;
		sort(meil[i].begin(), meil[i].end());
		reverse(meil[i].begin(), meil[i].end());

		++tp22;
		for (auto tr : meil[i]) {
			if (vu22[tr.se] == tp22) continue;
			vu22[tr.se] = tp22;
			ow.push_back(tr);
			if ((int)(ow.size()) == highCte) break;
		}
		meil[i] = ow;
	}

	form(i, nbReq) {
		int villeArr; cin >> villeArr; --villeArr;
		++tps;
		int nbSkips; cin >> nbSkips;
		form(iRcp, nbSkips) { int x; cin >> x; --x; sk[x] = tps; }
		if (nbSkips < lowCte) {
			bool ff = false;
			for (auto tr : meil[villeArr]) {
				if (sk[tr.se] != tps) {
					cout << tr.fi << "\n";
					ff = true;
					break;
				}
                if (!ff) cout << "-1\n";
			}
		} else {
			form(pos, villeArr+1) {
				dp[pos] = 0;
				for (int vo : revAdj[pos]) if (dp[vo] > 0 || sk[vo] != tps) chmax(dp[pos], dp[vo]+1);
			}
			if (dp[villeArr] == 0 && sk[villeArr] == tps) dp[villeArr] = -1;
			cout << dp[villeArr] << "\n";
		}
	}
}
# Verdict Execution time Memory Grader output
1 Correct 6 ms 5112 KB Output is correct
2 Correct 6 ms 5084 KB Output is correct
3 Correct 6 ms 4984 KB Output is correct
4 Correct 6 ms 4984 KB Output is correct
5 Correct 12 ms 5752 KB Output is correct
6 Correct 12 ms 5752 KB Output is correct
7 Correct 11 ms 5624 KB Output is correct
8 Correct 20 ms 8056 KB Output is correct
9 Correct 20 ms 8104 KB Output is correct
10 Correct 20 ms 8056 KB Output is correct
11 Correct 21 ms 7672 KB Output is correct
12 Correct 16 ms 6524 KB Output is correct
13 Correct 21 ms 7676 KB Output is correct
14 Correct 19 ms 7032 KB Output is correct
15 Correct 14 ms 6136 KB Output is correct
16 Correct 19 ms 6904 KB Output is correct
17 Correct 19 ms 7032 KB Output is correct
18 Correct 16 ms 6392 KB Output is correct
19 Correct 20 ms 7160 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 5112 KB Output is correct
2 Correct 6 ms 5084 KB Output is correct
3 Correct 6 ms 4984 KB Output is correct
4 Correct 6 ms 4984 KB Output is correct
5 Correct 12 ms 5752 KB Output is correct
6 Correct 12 ms 5752 KB Output is correct
7 Correct 11 ms 5624 KB Output is correct
8 Correct 20 ms 8056 KB Output is correct
9 Correct 20 ms 8104 KB Output is correct
10 Correct 20 ms 8056 KB Output is correct
11 Correct 21 ms 7672 KB Output is correct
12 Correct 16 ms 6524 KB Output is correct
13 Correct 21 ms 7676 KB Output is correct
14 Correct 19 ms 7032 KB Output is correct
15 Correct 14 ms 6136 KB Output is correct
16 Correct 19 ms 6904 KB Output is correct
17 Correct 19 ms 7032 KB Output is correct
18 Correct 16 ms 6392 KB Output is correct
19 Correct 20 ms 7160 KB Output is correct
20 Execution timed out 2053 ms 166492 KB Time limit exceeded
21 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 5112 KB Output is correct
2 Correct 6 ms 5084 KB Output is correct
3 Correct 6 ms 4984 KB Output is correct
4 Correct 6 ms 4984 KB Output is correct
5 Correct 12 ms 5752 KB Output is correct
6 Correct 12 ms 5752 KB Output is correct
7 Correct 11 ms 5624 KB Output is correct
8 Correct 20 ms 8056 KB Output is correct
9 Correct 20 ms 8104 KB Output is correct
10 Correct 20 ms 8056 KB Output is correct
11 Correct 21 ms 7672 KB Output is correct
12 Correct 16 ms 6524 KB Output is correct
13 Correct 21 ms 7676 KB Output is correct
14 Correct 19 ms 7032 KB Output is correct
15 Correct 14 ms 6136 KB Output is correct
16 Correct 19 ms 6904 KB Output is correct
17 Correct 19 ms 7032 KB Output is correct
18 Correct 16 ms 6392 KB Output is correct
19 Correct 20 ms 7160 KB Output is correct
20 Execution timed out 2053 ms 166492 KB Time limit exceeded
21 Halted 0 ms 0 KB -