ABC338 F. Negative Traveling Salesman
Difficulty:1835
問題
N頂点M辺の重み付き単純無向グラフがある。負閉路は存在しない。
N頂点を通るウォークが存在するか判定し、存在する場合は重みの操作の最小値を求めよ。
解法
ワーシャルフロイド法で全頂点対最短距離を前計算しておき、素直にbitDPをすればよい。
dp[S][i] = これまでに訪れた頂点集合がSで、最後にいる頂点番号がiであるときの重みの最小値
実装
code:cpp
bool solve(){
LL(n,m);
vector<vector<pair<ll,ll>>>g(n);
vector dist(n,vector(n,INF));
rep(i,m){
LL(u,v,w);
u--,v--;
}
rep(k,n){
rep(i,n){
rep(j,n){
}
}
}
vector dp(1<<n,vector(n,INF));
rep(i,1<<n){
rep(j,n){
rep(k,n){
}
}
}
ll ans{INF};
rep(i,n){
}
if(ans==INF)O("No");
else O(ans);
return false;
}