next_permutationの使い方
結論
これを見ろ vivi.dyndns.org
実装例
sort(all(a)); ll ans = 1e12; do { ll tmp = 0; REP(i, a.size()-1) { tmp += g[a[i]][a[i+1]]; } ans = min(ans, tmp); } while(next_permutation(all(r))); //辞書順に取り出す。辞書順最初に戻るタイミングでfalseを返却する。 cout << ans << endl;