Submission #1187883

#TimeUsernameProblemLanguageResultExecution timeMemory
1187883_ncng.nyrSynchronization (JOI13_synchronization)C++20
0 / 100
8095 ms15688 KiB
#include<bits/stdc++.h> using namespace std; const int N = 1e5 + 5; int n, m, k, timer; int in[N], out[N], rev[N], state[N], ans[N], boss[N], par[N], pre[N]; pair<int, int> e[N]; vector<int> ad[N]; map<pair<int, int>, bool> del; void dfs (int u, int p) { in[u] = ++timer; rev[timer] = u; for (auto v : ad[u]) if (v != p) { par[v] = u; dfs(v, u); } out[u] = timer; } int root (int v) { while (par[v] != v) v = par[v]; return v; } int32_t main() { cin.tie(0) -> sync_with_stdio(0); #define task "Synchronization" if (fopen ("task.inp", "r")) { freopen ("task.inp", "r", stdin); freopen ("task.out", "w", stdout); } if (fopen (task".inp", "r")) { freopen (task".inp", "r", stdin); freopen (task".out", "w", stdout); } cin >> n >> m >> k; for (int i = 1; i < n; ++i) { int u, v; cin >> u >> v; ad[u].push_back(v); ad[v].push_back(u); e[i] = {u, v}; } dfs(1, 0); for (int i = 1; i < n; ++i) { auto [u, v] = e[i]; if (in[u] > in[v]) swap(u, v); e[i] = {u, v}; } for (int i = 1; i <= n; ++i) ans[i] = 1, par[i] = i; for (int i = 1; i <= m; ++i) { int id; cin >> id; state[id] ^= 1; auto [u, v] = e[id]; if (state[id]) { int head = root(u), res = ans[head] + ans[v] - pre[id]; ans[head] = ans[v] = res; par[v] = u; } else { int head = root(u); pre[id] = ans[head]; ans[v] = ans[head]; par[v] = v; } } while (k--) { int u; cin >> u; cout << ans[u] << '\n'; } }

Compilation message (stderr)

synchronization.cpp: In function 'int32_t main()':
synchronization.cpp:34:13: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   34 |     freopen ("task.inp", "r", stdin);
      |     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
synchronization.cpp:35:13: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   35 |     freopen ("task.out", "w", stdout);
      |     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
synchronization.cpp:39:13: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   39 |     freopen (task".inp", "r", stdin);
      |     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
synchronization.cpp:40:13: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   40 |     freopen (task".out", "w", stdout);
      |     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...