Submission #948608

#TimeUsernameProblemLanguageResultExecution timeMemory
948608JakobZorzBitaro’s Party (JOI18_bitaro)C++17
14 / 100
2011 ms15512 KiB
#include<iostream> #include<vector> #include<queue> #include<stack> #include<algorithm> #include<limits.h> #include<math.h> #include<map> #include<set> #include<unordered_map> #include<unordered_set> #include<iomanip> #include<cstring> #include<random> typedef long long ll; typedef unsigned long long ull; typedef long double ld; using namespace std; int n,m,q; vector<int>nodes[100000]; vector<int>rev[100000]; int solve(int src,vector<int>blocked){ vector<int>in(n); vector<int>res(n); queue<int>q; for(int i=0;i<n;i++){ in[i]=(int)rev[i].size(); if(in[i]==0) q.push(i); } for(int i:blocked) res[i]=-1e9; while(q.size()){ int node=q.front(); q.pop(); for(int ne:rev[node]) res[node]=max(res[node],res[ne]+1); for(int ne:nodes[node]){ in[ne]--; if(in[ne]==0) q.push(ne); } } return max(-1,res[src]); } void solve(){ cin>>n>>m>>q; for(int i=0;i<m;i++){ int a,b; cin>>a>>b; a--;b--; nodes[a].push_back(b); rev[b].push_back(a); } while(q--){ int src,k; cin>>src>>k; src--; vector<int>blocked(k); for(int&i:blocked){ cin>>i; i--; } cout<<solve(src,blocked)<<"\n"; } } int main(){ ios::sync_with_stdio(false);cout.tie(NULL);cin.tie(NULL); //freopen("/Users/jakob/cp_testing/test.txt","r",stdin);//freopen("output.out","w",stdout); int t=1;//cin>>t; while(t--)solve(); return 0; } /* 5 6 3 1 2 2 4 3 4 1 3 3 5 4 5 4 1 1 5 2 2 3 2 3 1 4 5 1 3 0 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...