이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
	#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
const int MAXN = 1e5 + 123;
const ll MOD = 1000000007;
vector<int> edg[MAXN];
ll pw(ll a, ll m) {
    if (!m)
        return 1;
    a %= MOD;
    if (m % 2)
        return pw(a, m - 1) * a % MOD;
    return pw(a * a, m >> 1);
}
signed main() {
    ll n, d;
    cin >> n >> d;
    for (int i = 1; i < n; ++i) {
        int u, v;
        cin >> u >> v;
        --u, --v;
        edg[u].push_back(v);
        edg[v].push_back(u);
    }
    if (n == 2) {
        // 2 * 4^{d - 1} + 2^2 * 4^{d - 2} + 2^3 * 4^{d - 3} + ... + 2^k * 4^{d - k}
        // 2^{2d - 1} + 2^{2d - 2} + 2^{2d - 3} + ... + 2^{2d - d} = 2^d * (1 + 2 + 4 + ... + 2^{d - 1})
        cout << pw(4, d) << endl;
        return 0;
    }
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |