Submission #791578

# Submission time Handle Problem Language Result Execution time Memory
791578 2023-07-24T07:38:25 Z ttamx Star Trek (CEOI20_startrek) C++14
45 / 100
72 ms 19652 KB
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;

const int N=1e5+5;
const ll mod=1e9+7;

ll binpow(ll a,ll b){
    ll res=1;
    while(b>0){
        if(b&1)res*=a,res%=mod;
        a*=a,a%=mod;
        b>>=1;
    }
    return res;
}

int n;
ll d,ans,sum;
vector<int> adj[N];
ll dp[N][4];
bool dp1[N],dp2[N];

void dfs(int u,int p){
    for(auto v:adj[u]){
        if(v==p)continue;
        dfs(v,u);
        dp1[u]|=!dp1[v];
    }
}

void dfs2(int u,int p,bool w){
    int cnt=!w;
    dp2[u]=dp1[u]|!w;
    for(auto v:adj[u]){
        if(v==p)continue;
        cnt+=!dp1[v];
    }
    for(auto v:adj[u]){
        if(v==p)continue;
        dfs2(v,u,cnt-!dp1[v]>0);
    }
}

void dfs3(int u,int p){
    int cnt=0;
    for(auto v:adj[u]){
        if(v==p)continue;
        cnt+=!dp1[v];
    }
    for(auto v:adj[u]){
        if(v==p)continue;
        dfs3(v,u);
        dp[u][0]+=dp[v][1];
        if(cnt-!dp1[v]>0)dp[u][0]+=dp[v][0];
        else dp[u][1]+=dp[v][0];
        dp[u][0]%=mod;
        dp[u][1]%=mod;
    }
    dp[u][0]+=n-sum;
    if(dp1[u])dp[u][0]+=sum;
    else dp[u][1]+=sum;
    dp[u][0]%=mod;
    dp[u][1]%=mod;
}

int main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    cin >> n >> d;
    if(n==2)cout << binpow(4,d),exit(0);
    for(int i=1;i<n;i++){
        int u,v;
        cin >> u >> v;
        adj[u].emplace_back(v);
        adj[v].emplace_back(u);
    }
    dfs(1,1);
    dfs2(1,1,true);
    for(int i=1;i<=n;i++)sum+=dp2[i];
    dfs3(1,1);
    cout << dp[1][0];
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2644 KB Output is correct
2 Incorrect 1 ms 2644 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 2644 KB Output is correct
2 Correct 1 ms 2644 KB Output is correct
3 Correct 1 ms 2644 KB Output is correct
4 Correct 1 ms 2644 KB Output is correct
5 Correct 2 ms 2644 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2644 KB Output is correct
2 Correct 2 ms 2656 KB Output is correct
3 Correct 1 ms 2644 KB Output is correct
4 Correct 1 ms 2644 KB Output is correct
5 Correct 1 ms 2644 KB Output is correct
6 Correct 2 ms 2644 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2644 KB Output is correct
2 Correct 2 ms 2656 KB Output is correct
3 Correct 1 ms 2644 KB Output is correct
4 Correct 1 ms 2644 KB Output is correct
5 Correct 1 ms 2644 KB Output is correct
6 Correct 2 ms 2644 KB Output is correct
7 Correct 1 ms 2772 KB Output is correct
8 Correct 2 ms 2744 KB Output is correct
9 Correct 2 ms 2644 KB Output is correct
10 Correct 2 ms 2644 KB Output is correct
11 Correct 3 ms 2644 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2644 KB Output is correct
2 Correct 2 ms 2656 KB Output is correct
3 Correct 1 ms 2644 KB Output is correct
4 Correct 1 ms 2644 KB Output is correct
5 Correct 1 ms 2644 KB Output is correct
6 Correct 2 ms 2644 KB Output is correct
7 Correct 1 ms 2772 KB Output is correct
8 Correct 2 ms 2744 KB Output is correct
9 Correct 2 ms 2644 KB Output is correct
10 Correct 2 ms 2644 KB Output is correct
11 Correct 3 ms 2644 KB Output is correct
12 Correct 48 ms 13432 KB Output is correct
13 Correct 72 ms 19652 KB Output is correct
14 Correct 29 ms 10232 KB Output is correct
15 Correct 41 ms 10320 KB Output is correct
16 Correct 68 ms 10276 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2644 KB Output is correct
2 Correct 2 ms 2656 KB Output is correct
3 Correct 1 ms 2644 KB Output is correct
4 Correct 1 ms 2644 KB Output is correct
5 Correct 1 ms 2644 KB Output is correct
6 Correct 2 ms 2644 KB Output is correct
7 Correct 1 ms 2772 KB Output is correct
8 Correct 2 ms 2744 KB Output is correct
9 Correct 2 ms 2644 KB Output is correct
10 Correct 2 ms 2644 KB Output is correct
11 Correct 3 ms 2644 KB Output is correct
12 Correct 1 ms 2644 KB Output is correct
13 Incorrect 2 ms 2644 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2644 KB Output is correct
2 Correct 2 ms 2656 KB Output is correct
3 Correct 1 ms 2644 KB Output is correct
4 Correct 1 ms 2644 KB Output is correct
5 Correct 1 ms 2644 KB Output is correct
6 Correct 2 ms 2644 KB Output is correct
7 Correct 1 ms 2772 KB Output is correct
8 Correct 2 ms 2744 KB Output is correct
9 Correct 2 ms 2644 KB Output is correct
10 Correct 2 ms 2644 KB Output is correct
11 Correct 3 ms 2644 KB Output is correct
12 Correct 48 ms 13432 KB Output is correct
13 Correct 72 ms 19652 KB Output is correct
14 Correct 29 ms 10232 KB Output is correct
15 Correct 41 ms 10320 KB Output is correct
16 Correct 68 ms 10276 KB Output is correct
17 Correct 1 ms 2644 KB Output is correct
18 Incorrect 2 ms 2644 KB Output isn't correct
19 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2644 KB Output is correct
2 Incorrect 1 ms 2644 KB Output isn't correct
3 Halted 0 ms 0 KB -