답안 #785505

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
785505 2023-07-17T09:45:22 Z kebine Sprinkler (JOI22_sprinkler) C++17
0 / 100
4000 ms 29956 KB
#include <bits/stdc++.h>
using namespace std;

# define int long long
# define fir first
# define sec second
# define pb push_back
# define endl "\n"

const int cnst = 2e5+5;
bool mutipletestcase = 0;
//bool debug = false;


int F[cnst];
int inv[cnst];

int A(int a, int b, int mod) {return ((a%mod)+(b%mod)%mod);}
int S(int a, int b, int mod) {return ((a%mod)-(b%mod)+mod)%mod;}
int M(int a, int b, int mod) {return ((a%mod)*(b%mod)%mod);}

int E(int b, int p, int mod) {
    if(!p) return 1;
    return (p%2 ? M(E(M(b, b, mod), p/2, mod), b, mod) : E(M(b, b, mod), p/2, mod));
}

int C(int n, int r, int mod) {return M(M(F[n], inv[n-r], mod), inv[r], mod);}

void prefac(int maxn, int mod) {
    F[0] = 1;
    for(int i = 1; i<=maxn; i++) F[i] = M(F[i-1], i, mod);
    inv[maxn] = E(F[maxn], mod-2, mod);
    for(int i = maxn-1; i>=0; i--) inv[i] = M(inv[i+1], i+1, mod);
}

int gcd(int a, int b) {return b ? gcd(b, a%b): a;}
int lcm(int a, int b) {return a/gcd(a, b)*b;}

int par[cnst];
int val[cnst];
vector<int> vec[cnst];

void dfs(int x) {
    for(auto v: vec[x]) {
        if(v == par[x]) continue;
        par[v] = x;
        dfs(v);
    }
}

void solve() {
    int n, l; cin >> n >> l;

    for(int i = 1; i<n; i++) {
        int a, b; cin >> a >> b;
        vec[a].pb(b);
        vec[b].pb(a);
    } 

    for(int i = 1; i<=n; i++) cin >> val[i];

    int q; cin >> q;
    
    bool yes = 1;
    tuple<int, int, int, int> quer[q+5];

    for(int i = 1; i<=q; i++) {
        int id; cin >> id;
        int a, b = -1, c = -1;
        if(id == 1) cin >> a >> b >> c;
        else cin >> a;

        quer[i] = {id, a, b, c};
        if(id == 1 && b > 1) yes = 0; 
    }

    if(yes) {
        for(int i = 1; i<=q; i++) {
            auto[a, x, d, k] = quer[i];
            if(a == 1) {
                val[x] = M(val[x], k, l);
                if(d == 0) continue;
                for(auto v: vec[x]) val[v] = M(val[v], k, l);
            }
            else cout << val[x] << endl;
        }
    }


}

signed main() {
    ios_base::sync_with_stdio(false);
    int t = 1;
    if(mutipletestcase) cin >> t; 
    while(t--) solve();
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 4948 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 231 ms 29840 KB Output is correct
3 Correct 211 ms 26704 KB Output is correct
4 Correct 195 ms 27216 KB Output is correct
5 Correct 189 ms 28304 KB Output is correct
6 Correct 190 ms 28352 KB Output is correct
7 Correct 200 ms 28700 KB Output is correct
8 Correct 180 ms 28856 KB Output is correct
9 Correct 164 ms 28740 KB Output is correct
10 Correct 205 ms 25732 KB Output is correct
11 Correct 173 ms 29956 KB Output is correct
12 Correct 191 ms 26764 KB Output is correct
13 Execution timed out 4067 ms 26800 KB Time limit exceeded
14 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 231 ms 29840 KB Output is correct
3 Correct 211 ms 26704 KB Output is correct
4 Correct 195 ms 27216 KB Output is correct
5 Correct 189 ms 28304 KB Output is correct
6 Correct 190 ms 28352 KB Output is correct
7 Correct 200 ms 28700 KB Output is correct
8 Correct 180 ms 28856 KB Output is correct
9 Correct 164 ms 28740 KB Output is correct
10 Correct 205 ms 25732 KB Output is correct
11 Correct 173 ms 29956 KB Output is correct
12 Correct 191 ms 26764 KB Output is correct
13 Execution timed out 4067 ms 26800 KB Time limit exceeded
14 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 4948 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 4948 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 4948 KB Output isn't correct
2 Halted 0 ms 0 KB -