C. иннокентий и одна известная страна
иннокентий работает в одной большой корпорации. сейчас его является открытие филиала в новой стране. в стране n городов соединенных n − 1 дорогой так, что из любого
города можно добраться до любого другого.
открытие филиала — дело ответственное. филиал должен располагаться в городе, стоимость
транспортировки из которого минимальна. для этого иннокентий придумал следующую форму
расчета: пусть u — выбранный город, а vi — соседние города, то есть такие, в которые можно
попасть из
p
u, проехав ровно по одной дороге. тогда стоимость транспортировки определяется как
(dvi + 1)2
, где dvi — длина наибольшего пути, начинающегося в городе vi
, который не проходит
дважды через какой-либо город и не проходит через u. иннокентию выбрать город, в
котором нужно разместить склад, чтобы стоимость была минимальной.
формат входных данных
в первой строке входного файла записано число n — количество городов (1 6 n 6 5 · 105
).
в следующих n − 1 строках дано описание дорог. каждая строка содержит по два целых числа
u и v — номера городов, которые соответствующая дорога соединяет (1 6 u, v 6 n, u 6= v).
формат выходных данных
в выходной файл необходимо вывести два числа: наименьшую стоимость размещения филиала
и город, при выборе которого она достигается. если подходящих ответов несколько, выведите любой
из них.
#include
using namespace std;
int main() {
bool repeat = true;
while (repeat) {
double число1, число2, число3, число4, число5;
cout << "'Введите числа: ";
cin >> число1 >> число2 >>число3 >> число4>>число5;
cout << "сумма: " << число1 + число2 +число3 + число4 + число5 << endl;
cout << "еще раз? (t/n) ";
char;
cin >>;
repeat = ( == 't');
}
return 0;
}
запись (record) — это пользовательский тип данных, котоорый может содержать поля с различными типами данных, например:
type
schools = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
students = record
name, surname : string;
age : byte;
school : schools;
end;
Для обращения к полям записи из главной программы необходимо разделять имя переменной типа Запись и поля, которое оно содержит, символом "." (точка). Например:
var
student : students;
begin
student.name := 'Иван';
student.surname := 'Пупкин';
end.
Если необходимо получить или изменить значения нескольких полей записи, то удобнее использовать конструкцию with:
begin
with student do begin
name := 'Вася';
surname := 'Пупкин';
age := 12;
school := 5;
end;
end.