Cod sursa(job #2300275)

Utilizator eilerGabriel-Ciprian Stanciu eiler Data 11 decembrie 2018 08:36:13
Problema Metrou4 Scor 0
Compilator cpp-64 Status done
Runda Arhiva ICPC Marime 0.8 kb
#include <fstream>
using namespace std;

int t, n, x[150000], y[150000], cost, s[150000];

int abs(int x){
	if (x<0)
		return -x;
	return x;
}

int dist(int a, int b){
	return abs(x[b]-x[a])+abs(y[b]-y[a]);
}

int main(){
	int i, j, mn, k;

	ifstream fin ("metrou4.in");
	fin >> t;
	ofstream fout ("metrou4.out");
	while (t--){
		fin >> n;
		for (i=0; i<n; i++)
			fin >> x[i] >> y[i];
		s[0]=-1;
		for (i=1; i<n; i++)
			s[i]=0;
		cost=0;

		for (i=1; i<n; i++){
			k=-1; mn=1e9;
			for (j=0; j<n; j++)
				if (s[j]!=-1 && mn>dist(j, s[j])){
					mn=dist(j, s[j]);
					k=j;
				}
			cost+=dist(k, s[k]);
			s[k]=-1;
			for (j=0; j<n; j++)
				if (s[j]!=-1 && dist(j, s[j])>dist(j, k))
					s[j]=k;
		}
		fout << cost << '\n';
	}
	fout.close();
	fin.close();

	return 0;
}