Submission #2702775


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
#define rep(i,s,e) for(int (i) = (s);(i) <= (e);(i)++)

vector<vector<int>> G;

i64 X[100];

i64 Y[100];

int dx[] = {1,-1,0,0};
int dy[] = {0,0,1,-1};

int vis[100];

void rec(int v,int n,int before_cnt){
  vis[v] = 1;
  int cnt = -1;
  for(int to : G[v]){
    if(vis[to]) continue;
    cnt++;
    if(cnt == (before_cnt ^ 1)) cnt++;
    X[to] = X[v] + dx[cnt] * (1LL << n);
    Y[to] = Y[v] + dy[cnt] * (1LL << n);
    rec(to,n - 1,cnt);
  }
}

char ans[100][100];

void rec2(int v,int n,int before_cnt){

  ans[X[v]][Y[v]] = v + 'A';
  vis[v] = 1;
  int cnt = -1;
  for(int to : G[v]){
    if(vis[to]) continue;
    int ddx = (X[to] - X[v] > 0 ? 1 : -1);
    int ddy = (Y[to] - Y[v] > 0 ? 1 : -1);
    if(X[to] == X[v]) ddx = 0;
    if(Y[to] == Y[v]) ddy = 0;
    for(int x = X[v] + ddx,y = Y[v] + ddy;x != X[to] || y != Y[to];x += ddx,y += ddy){
      ans[x][y] = (ddx != 0 ? '|' : '-');
    }
    rec2(to,n - 1,cnt);
  }
}

int main(){

  rep(i,0,99){
    rep(j,0,99) ans[i][j] = '.';
  }
  int N;
  cin >> N;
  G.resize(N);

  rep(i,0,N - 2){
    char c,d;
    cin >> c >> d;
    int a,b;
    a = c - 'A';
    b = d - 'A';

    G[a].push_back(b);
    G[b].push_back(a);
  }

  rec(0,N,10);
  vector<i64> xs,ys;
  rep(i,0,N - 1){
    xs.push_back(X[i]);
    ys.push_back(Y[i]);
  }

  sort(xs.begin(),xs.end());
  sort(ys.begin(),ys.end());
  xs.erase(unique(xs.begin(),xs.end()),xs.end());
  ys.erase(unique(ys.begin(),ys.end()),ys.end());

  rep(i,0,N - 1){
    X[i] = lower_bound(xs.begin(),xs.end(),X[i]) - xs.begin();
    Y[i] = lower_bound(ys.begin(),ys.end(),Y[i]) - ys.begin();
    X[i] *= 2;
    Y[i] *= 2;
    vis[i] = 0;
  }

  rec2(0,N,10);

  cout << 100 << " " << 100 << endl;
  rep(i,0,99){
    rep(j,0,99){
      cout << ans[i][j];
    }
    cout << endl;
  }
}

Submission Info

Submission Time
Task D - グラフィカルグラフ
User niuez
Language C++14 (GCC 5.4.1)
Score 1100
Code Size 1950 Byte
Status AC
Exec Time 2 ms
Memory 256 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1100 / 1100
Status
AC × 2
AC × 52
Set Name Test Cases
Sample 0_01, 0_02
All 0_01, 0_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17, 1_18, 1_19, 1_20, 1_21, 1_22, 1_23, 1_24, 1_25, 1_26, 1_27, 1_28, 1_29, 1_30, 1_31, 1_32, 1_33, 1_34, 1_35, 1_36, 1_37, 1_38, 1_39, 1_40, 1_41, 1_42, 1_43, 1_44, 1_45, 1_46, 1_47, 1_48, 1_49, 1_50, 1_51, 1_52
Case Name Status Exec Time Memory
0_01 AC 2 ms 256 KB
0_02 AC 2 ms 256 KB
1_03 AC 2 ms 256 KB
1_04 AC 2 ms 256 KB
1_05 AC 2 ms 256 KB
1_06 AC 2 ms 256 KB
1_07 AC 2 ms 256 KB
1_08 AC 2 ms 256 KB
1_09 AC 2 ms 256 KB
1_10 AC 2 ms 256 KB
1_11 AC 2 ms 256 KB
1_12 AC 2 ms 256 KB
1_13 AC 2 ms 256 KB
1_14 AC 2 ms 256 KB
1_15 AC 2 ms 256 KB
1_16 AC 2 ms 256 KB
1_17 AC 2 ms 256 KB
1_18 AC 2 ms 256 KB
1_19 AC 2 ms 256 KB
1_20 AC 2 ms 256 KB
1_21 AC 2 ms 256 KB
1_22 AC 2 ms 256 KB
1_23 AC 2 ms 256 KB
1_24 AC 2 ms 256 KB
1_25 AC 2 ms 256 KB
1_26 AC 2 ms 256 KB
1_27 AC 2 ms 256 KB
1_28 AC 2 ms 256 KB
1_29 AC 2 ms 256 KB
1_30 AC 2 ms 256 KB
1_31 AC 2 ms 256 KB
1_32 AC 2 ms 256 KB
1_33 AC 2 ms 256 KB
1_34 AC 2 ms 256 KB
1_35 AC 2 ms 256 KB
1_36 AC 2 ms 256 KB
1_37 AC 2 ms 256 KB
1_38 AC 2 ms 256 KB
1_39 AC 2 ms 256 KB
1_40 AC 2 ms 256 KB
1_41 AC 2 ms 256 KB
1_42 AC 2 ms 256 KB
1_43 AC 2 ms 256 KB
1_44 AC 2 ms 256 KB
1_45 AC 2 ms 256 KB
1_46 AC 2 ms 256 KB
1_47 AC 2 ms 256 KB
1_48 AC 2 ms 256 KB
1_49 AC 2 ms 256 KB
1_50 AC 2 ms 256 KB
1_51 AC 2 ms 256 KB
1_52 AC 2 ms 256 KB