Submission #3962415


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define FOR(i,a,b) for(int i = (a); i < (b); i++)
#define REP(i,n) FOR(i,0,n)
#define ALL(obj) (obj).begin(), (obj).end()
const ll MOD = 1e9+7;
vector<int> dpf,dpg;
vector<vector<int>> graph;
int n;
ll calcf(int num);
ll calcg(int num);
void cioacc(){//accelerate cin/cout
  cin.tie(0);
  ios::sync_with_stdio(false);
}
void input(){
  cin >> n;
  graph = vector<vector<int>>(n+1);
  int tmp1,tmp2;
  REP(i,n-1){
    cin >> tmp1 >> tmp2;
    graph[tmp1].push_back(tmp2);
    graph[tmp2].push_back(tmp1);
  }
  dpf.assign(n+1,-1);
  dpg.assign(n+1,-1);
}
void makegraph(int a,int b){ //親から子への有向グラフにする。a:child,b:parent
  if(a!=1){
    auto c = find(ALL(graph[a]),b);
    graph[a].erase(c);//aのリストからbを削除する。
  }
  REP(i,(int)graph[a].size()) makegraph(graph[a][i],a);
}
ll calcf(int num){
  if(dpf[num]!=-1) return dpf[num];
  dpf[num] = calcg(num);
  ll tmp = 1;
  REP(i,(int)graph[num].size()){
    tmp = tmp * calcg(graph[num][i]) % MOD;
  }
  dpf[num] = (dpf[num] + tmp) % MOD;
  return dpf[num];
}
ll calcg(int num){
  if(dpg[num]!=-1) return dpg[num];
  dpg[num] = 1;
  REP(i,(int)graph[num].size()){
    dpg[num] = dpg[num] * calcf(graph[num][i]) % MOD;
  }
  return dpg[num];
}

int main(){
  cioacc();
  input();
  makegraph(1,0);
  cout << calcf(1) << endl;
}

Submission Info

Submission Time
Task D - 塗り絵
User vjudge4
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1388 Byte
Status AC
Exec Time 46 ms
Memory 6656 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 22
Set Name Test Cases
All 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt
Case Name Status Exec Time Memory
000.txt AC 1 ms 256 KB
001.txt AC 1 ms 256 KB
002.txt AC 35 ms 5248 KB
003.txt AC 45 ms 6656 KB
004.txt AC 30 ms 4480 KB
005.txt AC 46 ms 6656 KB
006.txt AC 42 ms 6144 KB
007.txt AC 42 ms 6656 KB
008.txt AC 32 ms 4736 KB
009.txt AC 45 ms 6656 KB
010.txt AC 32 ms 4864 KB
011.txt AC 46 ms 6528 KB
012.txt AC 26 ms 4096 KB
013.txt AC 46 ms 6656 KB
014.txt AC 21 ms 3200 KB
015.txt AC 42 ms 6656 KB
016.txt AC 27 ms 4224 KB
017.txt AC 45 ms 6528 KB
018.txt AC 9 ms 1408 KB
019.txt AC 46 ms 6656 KB
020.txt AC 6 ms 896 KB
021.txt AC 45 ms 6656 KB