Submission #1101100

#TimeUsernameProblemLanguageResultExecution timeMemory
1101100InvMODBitaro’s Party (JOI18_bitaro)C++14
14 / 100
60 ms19020 KiB
#include<bits/stdc++.h> using namespace std; const int N = 1e5+1; int n, m, q, node[N]; vector<int> adj[N], rev_adj[N], Q[N]; namespace Sub1{ bool ckSub(){ return n <= 1e3; } const int N = 1e3+1; int mx_dist[N], del[N]; void process() { for(int cur_q = 1; cur_q <= q; cur_q++){ for(int v : Q[cur_q]){ del[v] = cur_q; } memset(mx_dist, 0, sizeof(mx_dist)); mx_dist[node[cur_q]] = 1; int answer = 0; for(int i = node[cur_q]; i >= 1; i--){ if(!mx_dist[i]) continue; if(del[i] != cur_q) answer = max(answer, mx_dist[i]); for(int v : rev_adj[i]){ mx_dist[v] = max(mx_dist[v], mx_dist[i]+1); } } --answer; cout << answer <<"\n"; } } } namespace Sub2{ bool ckSub(){ return q <= 1; } const int N = 1e5+1; int mx_dist[N], del[N]; void process() { for(int cur_q = 1; cur_q <= q; cur_q++){ for(int v : Q[cur_q]){ del[v] = cur_q; } memset(mx_dist, 0, sizeof(mx_dist)); mx_dist[node[cur_q]] = 1; int answer = 0; for(int i = node[cur_q]; i >= 1; i--){ if(!mx_dist[i]) continue; if(del[i] != cur_q) answer = max(answer, mx_dist[i]); for(int v : rev_adj[i]){ mx_dist[v] = max(mx_dist[v], mx_dist[i]+1); } } --answer; cout << answer <<"\n"; } } } namespace Sub3{ void process() { cout << "-1\n"; return; } } void solve() { cin >> n >> m >> q; for(int i = 1; i <= m; i++){ int u,v; cin >> u >> v; adj[u].push_back(v); rev_adj[v].push_back(u); } for(int i = 1; i <= q; i++){ cin >> node[i]; int x; cin >> x; for(int j = 1; j <= x; j++){ int v; cin >> v; Q[i].push_back(v); } } if(Sub1::ckSub()){ Sub1::process(); } else if(Sub2::ckSub()){ Sub2::process(); } else Sub3::process(); return; } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define name "InvMOD" if(fopen(name".INP", "r")){ freopen(name".INP", "r", stdin); freopen(name".OUT", "w", stdout); } solve(); return 0; }

Compilation message (stderr)

bitaro.cpp: In function 'int32_t main()':
bitaro.cpp:120:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  120 |         freopen(name".INP", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
bitaro.cpp:121:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  121 |         freopen(name".OUT", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...