
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma optimize("unroll-loops")
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define all(x) x.begin(), x.end()
#define rll(x) x.rbegin(), x.rend()
#define comp(x) x.erase(unique(all(x)), x.end())
#define MOD 1000000007
#define debug(x) cout << #x<<" is "<<x<<"\n";
#define X first
#define Y second
#define DEB cout<<"[DEBUG]"
#define PAIR(a,b) "("<<a<<", "<<b<<")"
#define PRINT1(V) DEB<<#V<<endl; for(auto i : V)DEB<<i<<"\n"
#define PRINT2(V) DEB<<#V<<endl; for(auto [a,b] : V)DEB<<PAIR(a,b)<<"\n";
typedef __int128_t lll;
typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> P;
typedef pair<ll,P> PP;
ll n;
ll dp[101010] = {1}, dpR[101010]={1}, dpL[101010]={1}, CR[101010]={1}, CL[101010]={1};
ll A[101010], B[101010];
int main(){
fast;
cin>>n;
for(int i = 1 ; i <= n ; i++){
cin>>A[i]>>B[i];
dpR[i] = (dpR[A[i]] + 1 * CR[A[i]] + dpR[B[i]] - 1) % MOD;
dpL[i] = (dpL[B[i]] + 1 * CL[B[i]] + dpL[A[i]] - 1) % MOD;
CR[i] = (CR[A[i]]+CR[B[i]])%MOD;
CL[i] = (CL[A[i]]+CL[B[i]])%MOD;
dp[i] = (dp[A[i]] + dp[B[i]] + (dpR[A[i]] * CL[B[i]])%MOD + (dpL[B[i]] * CR[A[i]])%MOD - 1) % MOD;
cout<<dp[i]<<"\n";
}
}
코드도 겁나 짧네요..
'대회 > KOI' 카테고리의 다른 글
KOI 2024 일기 (1) | 2024.05.12 |
---|---|
KOI 지역본선 2005 (0) | 2023.10.09 |
KOI 지역본선 2004 (0) | 2023.10.09 |
KOI 2023 2차 대회 중등부 후기 (2) | 2023.07.17 |