제출 #1030189

#제출 시각아이디문제언어결과실행 시간메모리
1030189SamuellH12Bitaro’s Party (JOI18_bitaro)C++17
7 / 100
2080 ms383048 KiB
#include <bits/stdc++.h> #define optimize ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL) #define ALL(x) x.begin(), x.end() #define endl "\n" #define vi vector<int> #define pii pair<int,int> const int MAXN = 1e5 + 5; const int SQRT = 300; using namespace std; int block[MAXN], dp[MAXN], tempo; vi trafo[MAXN], order; vector<pii> best[MAXN]; int main(){ optimize; int n, m, q; // cin >> n >> m >> q; scanf("%d %d %d", &n, &m, &q); for(int i=0, u, v; i<m; i++) { // cin >> u >> v; scanf("%d %d", &u, &v); trafo[v].emplace_back(u); dp[u]++; } queue<int> fila; for(int i=1; i<=n; i++) if(dp[i] == 0) fila.emplace(i); while(!fila.empty()) { auto u = fila.front(); fila.pop(); order.emplace_back(u); for(auto v : trafo[u]) if(--dp[v] == 0) fila.emplace(v); } reverse(ALL(order)); for(auto u : order) { best[u].emplace_back(0, u); for(auto v : trafo[u]) for(auto [x, w] : best[v]) best[u].emplace_back(x-1, w); sort(ALL(best[u])); best[u].resize(min(SQRT, (int)(unique(ALL(best[u])) - best[u].begin()))); } int t, y; while(q--) { tempo++; // cin >> t >> y; scanf("%d %d", &t, &y); for(int i=0, x; i<y; i++) { // cin >> x; scanf("%d", &x); block[x] = tempo; } int ans = -1; for(auto [x, w] : best[t]) if(block[w] != tempo) { ans = -x; break; } if(ans == -1) for(auto u : order) { dp[u] = (block[u] == tempo ? -1 : 0); for(auto v : trafo[u]) if(~dp[v]) dp[u] = max(dp[u], dp[v]+1); if(u == t){ ans = dp[u]; break; } } cout << ans << endl; } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

bitaro.cpp: In function 'int main()':
bitaro.cpp:19:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |  scanf("%d %d %d", &n, &m, &q);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
bitaro.cpp:24:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |   scanf("%d %d", &u, &v);
      |   ~~~~~^~~~~~~~~~~~~~~~~
bitaro.cpp:62:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   62 |   scanf("%d %d", &t, &y);
      |   ~~~~~^~~~~~~~~~~~~~~~~
bitaro.cpp:67:9: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   67 |    scanf("%d", &x);
      |    ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...