Pagini recente » Cod sursa (job #1302558) | Cod sursa (job #2501513) | Cod sursa (job #1815785) | Cod sursa (job #100491) | Cod sursa (job #1709272)
#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, min;
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++)
{
min = 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<min&&visited[k]==0&&j!=k)
{
min = dist;
bun = k;
}
}
}
vizitate++;
visit_x[vizitate] = a_x[bun];
visit_y[vizitate] = a_y[bun];
total_cost += min;
visited[bun] = 1;
}
fout << total_cost << endl;
for (int i = 0; i < n; i++)
visited[i] = 0;
}
return 0;
}