Submission #17634

#TimeUsernameProblemLanguageResultExecution timeMemory
17634NamnamseoComputer Network (BOI14_network)C++14
75 / 100
143 ms5224 KiB
#include "network.h"
#include <vector>
#include <cstdio>

int dist_array[1010];
std::vector<int> points[1010];

void findRoute (int n, int a, int b)
{
	int i, od;
	int total_dist = ping(a,b);
	for(i=1;i<=n;++i) if(i!=a && i!=b) {
		od = ping(b,i);
		dist_array[i]=od;
		points[total_dist-od].push_back(i);
		//printf("%d ~ %d : %d\n",a,i,total_dist-od);
	}
	int current_point = a, current_dist = 0;
	int sz;
	while(true){
		//printf("Current point %d\n",current_point);
		++current_dist;
		if(current_dist == total_dist+1){
			//puts("final");
			travelTo(b);
			break;
		}
		sz=points[current_dist].size();
		for(i=0;i<sz;++i){
			int tmp=points[current_dist][i];
			if(ping(current_point,tmp)==0){
				//printf("trying to go to %d -> %d\n",current_point,tmp);
				current_point=tmp;
				travelTo(current_point);
				break;
			}
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...