日々精進

aikoと旅行とプログラミング

【AOJ 2619】Thread Tree

問題

Thread Tree | Aizu Online Judge

方針

  • 木を作って順に辿って出力する.
  • 英語つらいなって思ったけどそんなに難しくなかった.(これは方針ではない)

コード

#include<bits/stdc++.h>
 
#define rep(i, n) REP(i, 0, n)
#define REP(i, a, n) for(int i = a ; i < (int)n ; i++)
#define pb push_back
 
using namespace std;
 
struct TREE {
 
  int _d;
  string _name;
  vector<TREE*> _v;
 
  TREE(string name, int d){
    _name = name;
    _d = d;
  }
 
  void add(TREE* t){
    _v.pb(t);
  }
   
  void print(){
    rep(i,_d) cout << ".";
    cout << _name << endl;
 
    rep(i, _v.size()){
      _v[i]->print();
    }
  }
 
};
 
signed main(){
  int n;
  int k1, k;
  string m1, m;
  TREE* v[1001];
  TREE *t, *root;
   
  cin >> n;
  cin >> k1;
  cin >> m1;
   
  root = t = new TREE(m1, k1);  
  v[1] = t;
   
  REP(i, 2, n+1){
    cin >> k >> m;
    t = new TREE(m, v[k]->_d+1);
    v[k]->add(t);
    v[i] = t;
  }
 
  root->print();
}   

木を作るのに苦労するなど. まだまだですね.