ICPC 国内予選2010A 角角画伯,かく悩みき AOJ1165
やるだけ
#include <bits/stdc++.h> #define chmin(a, b) ((a)=min((a), (b))) #define chmax(a, b) ((a)=max((a), (b))) #define fs first #define sc second #define eb emplace_back using namespace std; typedef long long ll; typedef pair<int, int> P; typedef tuple<int, int, int> T; const ll MOD=1e9+7; const ll INF=1e18; int dx[]={1, -1, 0, 0}; int dy[]={0, 0, 1, -1}; int d[2][4] = { {-1,0,1,0}, {0,1,0,-1}, }; int posi[203][2]; int main(){ while(true){ int n; cin >> n; if(n == 0) break; int minmax[2][2]; minmax[0][0] = 0; minmax[0][1] = 0; minmax[1][0] = 0; minmax[1][1] = 0; for(int i = 1;i < n;i++){ int ni,di; cin >> ni >> di; for(int j = 0;j < 2;j++){ posi[i][j] = posi[ni][j] + d[j][di]; minmax[0][j] = min(minmax[0][j],posi[i][j]); minmax[1][j] = max(minmax[1][j],posi[i][j]); } } cout << minmax[1][0]-minmax[0][0]+1 << " " << minmax[1][1]-minmax[0][1]+1 << endl; } }