# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
185416 | Akashi | Bitaro’s Party (JOI18_bitaro) | C++14 | 16 ms | 7288 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5;
const int K = 269;
int n, m, q;
bool viz[N + 5];
int h[N + 5], a[N + 5], dist[N + 5];
pair <int, int> d[N + 5][K + 5];
vector <int> v[N + 5], vt[N + 5];
set <pair <int, int> > s;
int main()
{
scanf("%d%d%d", &n, &m, &q);
for(int i = 1; i <= n ; ++i)
for(int j = 1; j <= K ; ++j)
d[i][j] = {-1, -1};
int x, y;
for(int i = 1; i <= m ; ++i){
scanf("%d%d", &x, &y);
v[x].push_back(y);
vt[y].push_back(x);
}
for(int i = 1; i <= n ; ++i){
s.clear();
for(auto it : v[i])
h[it] = max(h[it], h[i] + 1);
s.insert({h[i], i});
for(auto it : vt[i]){
for(int k = 1; k <= K ; ++k){
if(d[it][k].first == -1) break ;
if(s.find(d[it][k]) != s.end()) continue ;
if(s.size() < K) s.insert(d[it][k]);
else{
if(s.rbegin()->first < d[it][k].first){
s.erase(s.find({s.rbegin()->first, s.rbegin()->second}));
s.insert(d[it][k]);
}
else break ;
}
}
}
set <pair <int, int> > :: iterator it = s.begin();
for(int k = 1; k <= K && it != s.end() ; ++k, ++it) d[i][k] = *it;
}
while(q--){
scanf("%d%d", &x, &y);
for(int i = 1; i <= y ; ++i){
scanf("%d", &a[i]);
viz[a[i]] = 1;
}
int ans = -2;
for(int i = 1; i <= K ; ++i){
if(d[x][i].first == -1) {ans = -1; break ;}
if(!viz[d[x][i].second]) {ans = h[x] - d[x][i].first; break ;}
}
if(ans == -2){
ans = -1;
for(int i = 1; i <= x ; ++i) dist[i] = -300000000;
dist[x] = 0;
for(int i = x; i >= 1 ; --i){
for(auto it : vt[i]) dist[it] = max(dist[it], dist[i] + 1);
if(!viz[i]) ans = max(dist[i], ans);
}
}
printf("%d\n", ans);
for(int i = 1; i <= y ; ++i) viz[a[i]] = 0;
}
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |