Submission #871581

#TimeUsernameProblemLanguageResultExecution timeMemory
871581Trisanu_DasStar Trek (CEOI20_startrek)C++17
30 / 100
1012 ms15228 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int mod=1e9+7; int n; int cnt=0,idx=0,tmp=0; int pw(int a,int b){ int ans=1; while(b){ if(b&1){ ans=ans*a%mod; } b>>=1; a=a*a%mod; } return ans; } vector<vector<int>> adj; vector<int> dp; void dfs(int k,int pa){ bool flag=0; for(int j:adj[k]){ if(j==pa){ continue; } dfs(j,k); if(dp[j]==0){ flag=1; } } if(k==idx&&tmp==1){ flag=1; } dp[k]=flag; } signed main(){ cin>>n; int d;cin>>d; if(n==2){ int p=pw(2,d*2); cout<<p<<endl; return 0; } adj.resize(n*2); for(int i=1;i<n;i++){ int a,b;cin>>a>>b;a--;b--; adj[a].push_back(b); adj[b].push_back(a); } for(int i=0;i<n;i++){ dp.assign(n,-1); dfs(i,i); if(dp[i]==1){ cnt++; } } int ans=0; for(int i=0;i<n;i++){ idx=i; dp.assign(n,-1); tmp=0; dfs(0,0); if(dp[0]==1){ ans+=cnt; } dp.assign(n,-1); tmp=1; dfs(0,0); if(dp[0]==1){ ans+=n-cnt; } } cout<<ans%mod<<endl; return 0;}
#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...