题解:AT_arc078_d [ARC078F] Mole and Abandoned Mine
LastKismet · · 题解
Sol
刻画一下合法图的状态,不难想到可以视作
图状压,
事实上对每个
Code
const int N=15;
int n,m;
int g[N][N];
int f[1<<N],e[1<<N],lg[1<<N],h[1<<N][N];
inline void Main(){
cin>>n>>m;
int sum=0;
rep(i,1,m){
int a,b,c;cin>>a>>b>>c;
--a,--b;
g[a][b]=g[b][a]=c;
sum+=c;
}
repl(i,0,n)lg[1<<i]=i;
repl(s,1,1<<n){
int i=lg[s&-s];
e[s]=e[s^1<<i];
repl(j,0,n)if(s>>j&1)e[s]+=g[i][j];
}
repl(s,1,1<<n)for(int t=s-1&s;t;t=t-1&s)f[s]|=(e[s]==e[t]+e[s^t]);
memset(h,-0x3f,sizeof h);
repl(s,1,1<<n)if(!f[s]&&(s&1)&&(s>>n-1&1^1))h[s][0]=e[s];
int S=(1<<n)-1;
repl(s,1,1<<n)repl(i,0,n)if(s>>i&1)
for(int t=S-s;t;t=t-1&S-s)if(!f[t])repl(j,0,n)if(g[i][j]&&(t>>j&1))chmax(h[s|t][j],h[s][i]+g[i][j]+e[t]);
put(sum-h[S][n-1]);
}