Submission #1277569

#TimeUsernameProblemLanguageResultExecution timeMemory
1277569hiepsimauhongBitaro’s Party (JOI18_bitaro)C++20
14 / 100
2092 ms6988 KiB
#include <bits/stdc++.h> using namespace std; #define FOR(I, L, R) for(int I(L) ; I <= (int)R ; ++I) #define FOD(I, R, L) for(int I(R) ; I >= (int)L ; --I) #define FOA(I, A) for(auto &I : A) #define print(A,L,R) FOR(OK, L, R){if(A[OK]<=-oo / 10||A[OK]>=oo)cout<<"- ";else cout<<A[OK]<<' ';}cout<<'\n'; #define prints(A) FOA(OK, A){cout<<OK<<' ';}cout << '\n'; #define printz(A,L,R) FOR(OK, 1, L){FOR(KO, 1, R){if(A[OK][KO]>-oo&&A[OK][KO]<oo)cout<<A[OK][KO]<<' ';else cout << "- ";} cout << '\n';}cout << '\n'; #define fs first #define sd second #define ii pair<int,int> #define iii pair<int, ii> #define all(A) A.begin(), A.end() #define quickly cin.tie(0) -> ios_base::sync_with_stdio(0); const int N = 2e5 + 5; const int SQRT = 320; const int oo = 1e9; int n, m, q; bool dead[N], vis[N]; int f[N], cnt[N]; vector<int> g[N]; signed main(){ quickly cin >> n >> m >> q; FOR(i, 1, m){ int u, v; cin >> u >> v; g[v].push_back(u); } while(q--){ int t, s; cin >> t >> s; bool is = 0; memset(dead, 0, sizeof dead); memset(f, 0, sizeof f); FOR(i, 1, s){ int u; cin >> u; dead[u] = 1; if(u == t) is = 1; } FOR(u, 1, t){ FOA(v, g[u]){ if(!dead[v]){ f[u] = max(f[v] + 1, f[u]); } else{ if(f[v] != 0){ f[u] = max(f[u], f[v] + 1); } } } } if(f[t] == 0 && is == 1){ cout << -1 << '\n'; continue; } cout << f[t] << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...