제출 #592139

#제출 시각아이디문제언어결과실행 시간메모리
592139jasminStar Trek (CEOI20_startrek)C++14
15 / 100
1093 ms576 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long 

const int mod=1e9+7;

int fastpow(int a, int e){
    if(e==0) return 1;
    int ans=fastpow(a, e/2);
    ans=(ans*ans)%mod;
    if(e%2==1){
        ans=(ans*a)%mod;
    }
    return ans;
}

bool dfs(int v, int p, vector<vector<int> >& adi){

    for(auto u: adi[v]){
        if(u==p) continue;

        if(!dfs(u, v, adi)){
            return true;
        }
    }
    return false;
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n, d;
    cin >>  n >> d;
    vector<vector<int> > adi(n*2);
    for(int i=0; i<n-1; i++){
        int a, b;
        cin >> a >> b;
        adi[a-1].push_back(b-1);
        adi[a-1+n].push_back(b-1+n);
        adi[b-1].push_back(a-1);
        adi[b-1+n].push_back(a-1+n);
    }

    int ans=0;
    if(n==2){
        ans=fastpow(4, d);
    }
    else{
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                adi[i].push_back(j+n);
                if(dfs(0, -1, adi)){
                    ans++;
                    //cout << i << " " << j << "\n";
                }
                adi[i].pop_back();
            }
        }
    }
    cout << ans << "\n";
}
#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...