Pagini recente » Cod sursa (job #1655056) | Cod sursa (job #3244329) | Cod sursa (job #2227805) | Cod sursa (job #1384887) | Cod sursa (job #1709277)
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
int visited[150001];
int a_x[150001];
int a_y[150001];
int visit_x[150001];
int visit_y[150001];
int dist, bun, minim;
int main()
{
ifstream fin("metrou4.in");
ofstream fout("metrou4.out");
int nrteste;
fin >> nrteste;
for (int t = 1; t <= nrteste; t++)
{
long long total_cost = 0;
int n;
fin >> n;
for (int i = 0; i < n; i++)
{
fin >> a_x[i]; fin >> a_y[i];
}
visit_x[0] = a_x[0];
visit_y[0] = a_y[0];
int vizitate = 1; visited[0] = 1;
while (vizitate != n)
{
for (int j = 0; j < vizitate; j++)
{
minim = 1000000000;
for (int k = 0; k < n; k++)
{
int dist = abs(visit_x[j] - a_x[k]) + abs(visit_y[j] - a_y[k]);
if(dist<minim&&visited[k]==0&&j!=k)
{
minim = dist;
bun = k;
}
}
}
vizitate++;
visit_x[vizitate] = a_x[bun];
visit_y[vizitate] = a_y[bun];
total_cost += minim;
visited[bun] = 1;
}
fout << total_cost << endl;
for (int i = 0; i < n; i++)
visited[i] = 0;
}
return 0;
}