제출 #1204544

#제출 시각아이디문제언어결과실행 시간메모리
1204544PlayVoltzBitaro’s Party (JOI18_bitaro)C++20
7 / 100
688 ms589824 KiB
#include <cstdio> #include <stdio.h> #include <stdbool.h> #include <iostream> #include <map> #include <vector> #include <climits> #include <stack> #include <string> #include <queue> #include <algorithm> #include <set> #include <unordered_set> #include <unordered_map> #include <cmath> #include <cctype> #include <bitset> #include <iomanip> #include <cstring> #include <numeric> #include <cassert> using namespace std; #define int long long #define pii pair<int, int> #define mp make_pair #define pb push_back #define fi first #define se second vector<bool> visited; vector<int> done, dist; vector<vector<int> > graph, freq; int dfs(int node, int t){ if (visited[node])return dist[node]; dist[node]=0; if (done[node]==t)dist[node]=LLONG_MIN/2; visited[node]=1; for (auto num:graph[node])dist[node]=max(dist[node], dfs(num, t)+1); return dist[node]; } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m, q, a, b; cin>>n>>m>>q; visited.resize(n+1, 0); graph.resize(n+1); freq.resize(n+1); dist.resize(n+1); done.resize(n+1, 0); vector<vector<pii> > dp(n+1); while (m--){ cin>>a>>b; graph[b].pb(a); } for (int i=1; i<=n; ++i){ int mx=0; for (auto num:graph[i])for (auto c:dp[num]){ mx=max(mx, c.se+1); freq[c.se+1].clear(); if (visited[c.fi])dist[c.fi]=max(dist[c.fi], c.se+1); else visited[c.fi]=1, dist[c.fi]=c.se+1; } for (auto num:graph[i])for (auto c:dp[num])if (visited[c.fi])visited[c.fi]=0, freq[dist[c.fi]].pb(c.fi); freq[0].clear(); freq[0].pb(i); for (int d=mx; d>=0&&dp[i].size()*dp[i].size()<n; --d)for (auto c:freq[d]){ dp[i].pb(mp(c, d)); if (dp[i].size()*dp[i].size()>=n)break; } } for (int t=1; t<=q; ++t){ cin>>a>>b; vector<int> vect(b); for (int i=0; i<b; ++i)cin>>vect[i], done[vect[i]]=t; if (vect.size()>=dp[a].size()){ visited.assign(n+1, 0); cout<<max(-1ll, dfs(a, t))<<"\n"; } else for (auto c:dp[a])if (done[c.fi]!=t){ cout<<c.se<<"\n"; break; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...