Submission #334657

#TimeUsernameProblemLanguageResultExecution timeMemory
334657CannotACBitaro’s Party (JOI18_bitaro)C++11
7 / 100
2074 ms13924 KiB
#include <bits/stdc++.h> #define FAST_IO ios_base::sync_with_stdio(false); cin.tie(0); #define FILE_NAME "BITARO" #define ll long long #define pb push_back #define fi first #define se second using namespace std; const int MAXN = 100001; int n, m, q; int d[MAXN], q_t[MAXN]; vector<int> adj[MAXN]; vector<bool> busy[MAXN]; void Dijkstra(int uStart) { memset(d, -0x3F, sizeof(d)); priority_queue<pair<int, int> > pq; d[uStart] = 0; pq.push({0, uStart}); while(!pq.empty()) { int u = pq.top().second; int du = pq.top().first; pq.pop(); if (du != d[u]) continue; for (int v : adj[u]) { if (d[v] < d[u]+1) { d[v] = d[u]+1; pq.push({d[v], v}); } } } } int main() { FAST_IO; // freopen(FILE_NAME".INP", "r", stdin); // freopen(FILE_NAME".OUT", "w", stdout); cin >> n >> m >> q; for (int i = 1; i <= m; ++i) { int u, v; cin >> u >> v; adj[v].push_back(u); } for (int i = 1; i <= q; ++i) { int t, y; cin >> t >> y; q_t[i] = t; busy[i].resize(n+1, false); for (int j = 1; j <= y; ++j) { int c; cin >> c; busy[i][c] = true; } } for (int i = 1; i <= q; ++i) { Dijkstra(q_t[i]); int res = 0; for (int v = 1; v <= n; ++v) if (!busy[i][v]) res = max(res, d[v]); if (res == 0 && busy[i][q_t[i]]) res = -1; cout << res << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...