省略
省略
C++に変換後のコードはこちら
int N, M, X[35], Y[35], C[35];
wgraph<double> g;
int ns[5];
int n, m, a[2000], b[2000]; double c[2000];
{
int x, y;
double res = double_inf, tmp;
rd(N,M,(X,Y,C)(N+M));
rep(mask,1<<M){
n = N;
rep(i,M) ns[i] = -1;
rep(i,M) if(mask & 1<<i) ns[i] = n++;
m = 0;
rep(i,N+M) if(i < N || ns[i-N] >= 0) rep(j,i+1,N+M) if(j < N || ns[j-N] >= 0){
x = if[i < N, i, ns[i-N]];
y = if[j < N, j, ns[j-N]];
tmp = sqrt( (X[i]-X[j])**2 + (Y[i]-Y[j])**2 );
if(C[i] != C[j]) tmp *= 10;
arrInsert(m,m,a,x,b,y,c,tmp);
}
g.setEdge(n,m,a,b,c);
res <?= g.MST_Prim_cost();
}
wt(res);
}
Current time: 2024年04月18日17時28分14秒
Last modified: 2020年01月19日05時24分34秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder
トップページに戻る
Logged in as: unknown user (not login)