- https://atcoder.jp/contests/abc317/tasks/abc317_c
- AC https://atcoder.jp/contests/abc317/submissions/45031177
- 「C問題でDFS !?」という意見もあったようですが、next_permutationで巡る順番を全探索すれば簡単です
- 注意点として、全ての点を通る必要はないということ。なのでコストのMAXは毎回取っています(コード参照)
int main(){ cin.tie(0); ios::sync_with_stdio(false); // input ll N,M; cin>>N>>M; VV A(N, VI(N, -1)); rep(_,M){ ll a,b,c;cin>>a>>b>>c; a--;b--; A[a][b]=c; A[b][a]=c; } ll ma=0; VI I; rep(i,N)I.push_back(i); do{ // Iの順に行く ll sum=0; rep(i,N-1){ ll from = I[i]; ll to = I[i+1]; if(A[from][to]==-1){ sum=-inf; }else{ sum += A[from][to]; } chmax(ma,sum); // 毎回取る } }while(next_permutation(ALL(I))); p(ma); return 0; }