Pagini recente » Cod sursa (job #717741) | Cod sursa (job #213638) | Cod sursa (job #1633473) | Cod sursa (job #1501671) | Cod sursa (job #1712081)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
struct poz
{
int x;
int y;
int v;
};
struct poz a[150000];
int N;
int vecin(int r,int t)
{
int dist,m=999999;
int i ,s;
for(i=0;i<N;i++)
{
if(a[i].v==0&&(a[i].x!=r||a[i].y!=t))
{
dist=sqrt(pow(a[i].x-r,2))+sqrt(pow(a[i].y-t,2));
if(m>dist)
{
m=dist;
s=i;
}
}
}
a[s].v=1;
return s;
}
int distanta(int r,int t,int k,int l)
{
return (sqrt(pow(k-r,2))+sqrt(pow(l-t,2)));
}
int gata()
{
int i;
for(i=0;i<N;i++)
{
if(a[i].v==0)
return 0;
}
return 1;
}
int main()
{
int i,j,k;
int dist=0;
FILE *f1,*f2;
f1=fopen("metrou4.in","r");
f2=fopen("metrou4.out","w");
int r,t,T;
fscanf(f1,"%d",&T);
for(j=0;j<T;j++)
{
fscanf(f1,"%d",&N);
for(k=0;k<N;k++)
{
fscanf(f1,"%d %d",&a[k].x,&a[k].y);
}
while(gata()==0)
{
i=vecin(r,t);
dist=dist+distanta(r,t,a[i].x,a[i].y);
r=a[i].x;
t=a[i].y;
}
fprintf(f2,"%d\n",dist);
for(i=0;i<N;i++)
{
a[i].x=0;
a[i].y=0;
a[i].v=0;
}
}
return 0;
}