제출 #492511

#제출 시각아이디문제언어결과실행 시간메모리
492511LittleCubeStar Trek (CEOI20_startrek)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #define ll long long #define pii pair<int, int> #define pll pair<ll, ll> #define F first #define S second using namespace std; const ll MOD = 1000000007; ll N, D, dp[100005][2], pre[100005]; vector<int> E[100005]; void dfs(int k) { for (int i : E[k]) if (i != pre[k]) { pre[i] = k; dfs(i); if (dp[i][0] == 0 && dp[k][0] == 0) dp[k][0] = i; else if (dp[i][0] == 0) dp[k][1] = i; } } void reroot(int k) { for (int i : E[k]) if (i != pre[k]) { if ((dp[k][0] == 0) || (dp[k][0] == i && dp[k][1] == 0)) { if (dp[i][0] == 0) dp[i][0] = k; else dp[i][1] = k; } reroot(i); } } ll dfs2(int k, bool first) { if (first) if (dp[k][1] != 0) return 0; else return dfs2(dp[k][0], false); else { int ans = 1; for (int i : E[k]) if (i != pre[k]) ans += dfs2(i, true); return ans; } } signed main() { cin >> N >> D; if (N == 2) { ll p = D % (MOD - 1), b = 4; while (p) { if (p & 1) ans = (ans * b) % MOD; p >>= 1; b = b * b % MOD; } cout << ans << '\n'; return 0; } assert(D == 1); for (int i = 1; i < N; i++) { int u, v; cin >> u >> v; E[u].emplace_back(v); E[v].emplace_back(u); } dfs(1); ll cnt = dfs2(1, dp[1][0] != 0); reroot(1); ll lose = 0; for (int i = 1; i <= N; i++) if (dp[i][0] == 0) { lose++; //cerr << i << '\n'; } if (dp[1][0]) cout << (N * N - cnt * lose) % MOD << '\n'; else cout << (cnt * lose) % MOD << '\n'; }

컴파일 시 표준 에러 (stderr) 메시지

startrek.cpp: In function 'int main()':
startrek.cpp:70:17: error: 'ans' was not declared in this scope; did you mean 'abs'?
   70 |                 ans = (ans * b) % MOD;
      |                 ^~~
      |                 abs
startrek.cpp:74:17: error: 'ans' was not declared in this scope; did you mean 'abs'?
   74 |         cout << ans << '\n';
      |                 ^~~
      |                 abs