秋祭 | 静岡高校工学部



卬高杯


提出詳細

提出id提出時刻ユーザー名問題言語判定状況判定実行時間
1148922023-10-24 10:30:21euommoHcpp19/19AC194

#include <bits/stdc++.h>

int main() {
  std::cin.tie(0)->sync_with_stdio(0);
  std::cin.exceptions(std::cin.failbit);

  int N;
  std::cin >> N;

  std::vector<std::string> S(N);
  for (std::string &s: S)
    std::cin >> s;

  int ans = 0;
  std::vector<std::vector<int>> dp(1 << N, std::vector<int>(N, 0));
  for (int i = 0; i < (1 << N); ++i) {
    for (int j = 0; j < N; ++j) if (i >> j & 1) {
      for (int k = 0; k < N; ++k) if (k != j and (i >> k & 1) and S[k].back() == S[j][0])
        dp[i][j] = std::max(dp[i][j], dp[i ^ (1 << j)][k]);
      dp[i][j] += (int) S[j].size();
      ans = std::max(ans, dp[i][j]);
    }
  }

  std::cout << ans << '\n';

  return 0;
}

sample1.txt AC 2
sample2.txt AC 2
sample3.txt AC 3
case1.txt AC 155
case2.txt AC 131
case3.txt AC 133
case4.txt AC 133
case5.txt AC 127
case6.txt AC 166
case7.txt AC 165
case8.txt AC 2
case9.txt AC 7
case10.txt AC 5
case11.txt AC 4
case12.txt AC 7
case13.txt AC 10
case14.txt AC 3
case15.txt AC 7
case16.txt AC 194
194 AC194 AC