Pagini recente » Cod sursa (job #95143) | Cod sursa (job #2585100) | Cod sursa (job #3003316) | Cod sursa (job #3184445) | Cod sursa (job #3001083)
#include <bits/stdc++.h>
#pragma GCC optimize ("O3")
#define din cin
#define dout out
#define pi 3.14159265359
#define sw(x,y) x^=y,y^=x,x^=y
#define bmin(a,b)((a<b)?(a):(b))
#define bmax(a,b)((a>b)?(a):(b))
#define bminify(a,b)a=bmin(a,b)
#define bmaxify(a,b)a=bmax(a,b)
#define forq(i,ii,n)for(i=ii;i<n;i++)
using namespace std;
typedef long long ll;
#define mod 1000000009
ifstream in("bibel.in");
ofstream out("bibel.out");
ll n,m,a[1<<17][17],c0[17][3],n0=1,c[17][2],d[17][17],i,j,k,x,s,v[17],u;
int main()
{
for(i=0;i<(1<<17);i++)
for(j=0;j<17;j++)a[i][j]=LLONG_MAX;
while(true)
{
in>>x;
if(x==0)
in>>c[n][0]>>c[n][1],++n;
else if(x==1)
{
for(i=0;i<n;i++)
{
s=LLONG_MAX;
for(j=0;j<n0;j++)
bminify(s,c0[j][2]+(c[i][0]-c0[j][0])*(c[i][0]-c0[j][0])+(c[i][1]-c0[j][1])*(c[i][1]-c0[j][1]));
a[1<<i][i]=s;
for(j=0;j<n;j++)d[i][j]=(c[i][0]-c[j][0])*(c[i][0]-c[j][0])+(c[i][1]-c[j][1])*(c[i][1]-c[j][1]);
}
for(i=1;i<(1<<n)-1;i++)
{
u=0;
for(j=0;j<n;j++)if((i&(1<<j))!=0)v[u++]=j;
for(j=0;j<n;j++)
if((i&(1<<j))==0)
{
for(k=0;k<u;k++)bminify(a[i|(1<<j)][j],a[i][v[k]]+d[j][v[k]]);
}
for(k=0;k<u;k++)a[i][v[k]]=LLONG_MAX;
}
i=(1<<n)-1,n0=n,s=LLONG_MAX;
for(j=0;j<n;j++)c0[j][0]=c[j][0],c0[j][1]=c[j][1],c0[j][2]=a[i][j],bminify(s,a[i][j]);
out<<s<<'\n';
//break;
}
else break;
}
}