# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
627313 | haojiandan | Digital Circuit (IOI22_circuit) | C++17 | 1020 ms | 20512 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "circuit.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=(1e9)+2022;
const int maxn=(2e5)+10;
vector<int> son[maxn];
int prod[maxn],n,m;
void dfs1(int u) {
prod[u]=1;
if ((int)son[u].size()==0) return;
prod[u]=(int)son[u].size();
for (int &v : son[u]) dfs1(v),prod[u]=(ll)prod[u]*prod[v]%mod;
}
int sum[maxn];
int pre[maxn],suf[maxn];
void dfs2(int u) {
int sz=(int)son[u].size();
for (int i=0;i<sz;i++) pre[i]=(ll)(i==0?1:pre[i-1])*prod[son[u][i]]%mod;
for (int i=sz-1;i>=0;i--) suf[i]=(ll)(i==sz-1?1:suf[i+1])*prod[son[u][i]]%mod;
for (int i=0;i<sz;i++) {
int v=son[u][i];
sum[v]=sum[u];
if (i) sum[v]=(ll)sum[v]*pre[i-1]%mod;
if (i<sz-1) sum[v]=(ll)sum[v]*suf[i+1]%mod;
}
for (int &v : son[u]) {
dfs2(v);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |