Submission #791488

#TimeUsernameProblemLanguageResultExecution timeMemory
791488ttamxStar Trek (CEOI20_startrek)C++14
30 / 100
32 ms468 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const int N=1005; 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][2]; bool dfs(int u,int p){ bool res=true; for(auto v:adj[u]){ if(v==p)continue; res&=dfs(v,u); } res^=true; return res; } bool dfs2(int u,int p,int t,bool w){ bool res=true; for(auto v:adj[u]){ if(v==p)continue; res&=dfs2(v,u,t,w); } if(u==t)res&=w; res^=true; return res; } 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); } for(int i=1;i<=n;i++)sum+=dfs(i,i); for(int i=1;i<=n;i++)ans+=sum*dfs2(1,1,i,true)+(n-sum)*dfs2(1,1,i,false); cout << ans; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...