답안 #895320

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
895320 2023-12-29T18:44:23 Z ilef Regions (IOI09_regions) C++14
4 / 100
187 ms 131072 KB
#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int N=2e5+12;
const int R=501;
int H[N];
vector<int>graph[N];
vector<int>v[R];
int id[N];
int sz[R][N];
int trav[R][N];
void dfs(int u,int r2,int p,int &cnt){
    id[u]=cnt;
     sz[r2][u]=1;
    if(H[u]==r2){
       
        trav[r2][cnt]=1;
    }
    else{
         trav[r2][cnt]=0;
    }
     cnt++;
    for(auto v:graph[u]){
        if(v!=p){
            dfs(v,r2,u,cnt);
            sz[r2][u]+=sz[r2][v];
        }
    }
}
struct segtree{
    int size;
    vector<vector<int>>sums;
    void init(int n){
        size=1;
        while(size<n){
            size*=2;
        }
        sums.assign(R,vector<int>(2*size,0LL));
    }
     void build(vector<vector<int>>&a,int x,int lx,int rx,int r){
        if(rx-lx==1){
            if(lx<(int)a[r].size()){
               sums[r][x]=a[r][lx];
            }
            return ;
        }
        int m=(lx+rx)/2;
        build(a,2*x+1,lx,m,r);
        build(a,2*x+2,m,rx,r);
        sums[r][x]=sums[r][2*x+1]+sums[r][2*x+2];
    }
    void build(vector<vector<int>>&a,int r){
        build(a,0,0,size,r);
    }
    void set(int i,int v,int x,int lx,int rx,int r){
        if(rx-lx==1){
            sums[r][x]=v;
            return ;
        }
        int m=(lx+rx)/2;
        if(i<m){
            set(i,v,2*x+1,lx,m,r);
        }
        else{
            set(i,v,2*x+2,m,rx,r);
        }
        sums[r][x]=sums[r][2*x+1]+sums[r][2*x+2];
    }
     void set(int i,int v,int r){
        set(i,v,0,0,size, r);
    }
    long long sum(int l,int r,int x,int lx,int rx,int rr){
        if(lx>=r || l>=rx){
            return 0;
        }
        if(lx>=l && rx<=r){
            return sums[rr][x];
        }
        int m=(lx+rx)/2;
        return sum(l,r,2*x+1,lx,m,rr)+sum(l,r,2*x+2,m,rx,rr);
    }
    long long sum(int l,int r,int rr){
        return sum(l,r,0,0,size,rr);
    }
};
int32_t main(){
    int n,r,q;
    cin>>n>>r>>q;
    cin>>H[0];
    H[0]--;
    v[H[0]].push_back(0);
    for(int i=1;i<=n-1;i++){
        //cout<<1<<endl;
        int u;
        cin>>u>>H[i];
        H[i]--;
        u--;
        v[H[i]].push_back(i);
        graph[u].push_back(i);
        graph[i].push_back(u);
    }
        for(int j=0;j<r;j++){
            //cout<<1<<endl;
            int  cnt=0;
            dfs(0,j,-1,cnt);
        }
    vector<vector<int>>val(r,vector<int>(R,0LL));
    for(int i=0;i<n;i++){
        for(int j=0;j<r;j++){
            val[j][i]=trav[j][i];
        }
    }
    segtree st;
    st.init(n);
    for(int j=0;j<r;j++){
        //cout<<1<<endl;
    st.build(val,j);}

    while(q--){
        //cout<<1<<endl;
        int r1,r2;
        cin>>r1>>r2;
        cout<<endl;
        r1--;r2--;
        int summ=0;
        for(auto u:v[r1]){
            int a=id[u];
            int szz=sz[r2][u];
            //cout<<szz<<endl;
            summ+=st.sum(a,a+szz,r2);
            if(r1==r2){
                summ--;
            }
        }
        cout<<summ<<endl;
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 21080 KB Output is correct
2 Correct 5 ms 29272 KB Output is correct
3 Correct 15 ms 70680 KB Output is correct
4 Correct 26 ms 119588 KB Output is correct
5 Runtime error 17 ms 131072 KB Execution killed with signal 9
6 Runtime error 29 ms 131072 KB Execution killed with signal 9
7 Runtime error 25 ms 131072 KB Execution killed with signal 9
8 Runtime error 23 ms 131072 KB Execution killed with signal 9
9 Runtime error 22 ms 131072 KB Execution killed with signal 9
10 Runtime error 32 ms 131072 KB Execution killed with signal 9
11 Runtime error 50 ms 131072 KB Execution killed with signal 9
12 Runtime error 43 ms 131072 KB Execution killed with signal 9
13 Runtime error 55 ms 131072 KB Execution killed with signal 9
14 Runtime error 61 ms 131072 KB Execution killed with signal 9
15 Runtime error 53 ms 131072 KB Execution killed with signal 9
# 결과 실행 시간 메모리 Grader output
1 Runtime error 113 ms 131072 KB Execution killed with signal 9
2 Runtime error 187 ms 131072 KB Execution killed with signal 9
3 Runtime error 126 ms 131072 KB Execution killed with signal 9
4 Runtime error 35 ms 6488 KB Execution killed with signal 11
5 Runtime error 32 ms 6488 KB Execution killed with signal 11
6 Runtime error 30 ms 6488 KB Execution killed with signal 11
7 Runtime error 32 ms 6488 KB Execution killed with signal 11
8 Runtime error 30 ms 6488 KB Execution killed with signal 11
9 Runtime error 30 ms 6488 KB Execution killed with signal 11
10 Runtime error 30 ms 6488 KB Execution killed with signal 11
11 Runtime error 30 ms 6488 KB Execution killed with signal 11
12 Runtime error 30 ms 6488 KB Execution killed with signal 11
13 Runtime error 30 ms 6488 KB Execution killed with signal 11
14 Runtime error 30 ms 6488 KB Execution killed with signal 11
15 Runtime error 30 ms 6488 KB Execution killed with signal 11
16 Runtime error 30 ms 6488 KB Execution killed with signal 11
17 Runtime error 30 ms 6488 KB Execution killed with signal 11