30 {для изучения океана планеты солярис было построено n исследовательских станций. каждая из станций задаётся координатами (xi, yi, zi) в пространстве. для быстрого перемещения между станциями запланировано построить n-1 телепорт, каждый из которых будет соединять две станции и позволит перемещаться между ними в произвольном направлении. набор телепортов должен соединять все станции, то есть так, чтобы с любой станции до любой другой можно было переместиться либо непосредственно через соединяющий их телепорт, либо использовав несколько телепортов с посещением произвольных станций. стоимость постройки телепорта между станциями i и j равна cij = min(|xi – xj|, |yi – yj|, |zi – zj|). напишите программу, которая по положению n исследовательских станций найти минимальную стоимость искомого набора телепортов. вход: файл input.txt, в первой строке содержится число n – количество исследовательских станций. в следующих n строках содержится описание очередной станции, задаваемой координатами (xi, yi, zi). координаты разделяются пробелом. ограничения: 2≤n≤105, -109≤ xi, yi, zi ≤109 выход: файл output.txt, в единственной строке содержится число – минимальная стоимость постройки набора телепортов.}язык c++
184
204
Ответы на вопрос:
#include < stdio.h> #define maxsize 105 typedef struct station{ int x, y, z; } station; int abs(int x){ return x > = 0 ? x : -x; } int min(int a, int b){ return a < = b ? a : b; } int main(){ file *ist, *ost; station s[maxsize]; int w[maxsize][maxsize]; int inc[maxsize]; int n,i,j,k,m,l,r; ist = fopen("input.txt","r"); fscanf(ist, "%d", & n); for(i = 0; i < n; i++) fscanf(ist, "%d %d %d", & s[i].x, & s[i].y, & s[i].z); fclose(ist); for(i = 0; i < n; i++) inc[i] = 0; for(i = 0; i < n; i++) for(j = i; j < n; j++) w[i][j] = w[j][i] = min(abs(s[i].x - s[j].x), min(abs(s[i].y - s[j].y), abs(s[i].z - s[j].z)) ); r = 0; k = 1; inc[0] = 1; while(k < n){ m = -1; for(i = 0; i < n; i++) if(inc[i]) for(j = 0; j < n; j++) if(! inc[j]) if (m == -1 || w[i][j] < m) m = w[i][j], l = j; r += m; inc[l] = 1; k++; } ost = fopen("output.txt","w"); fprintf(ost,"%d", r); fclose(ost); return 0; }
1) 25-18=7 (уч) - изучают язык
2) 27-18=9 (уч) - изучают французский язык
3) 7+9+18=34 (уч) - всего в классе учеников
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
Sudzuky20.02.2023 06:25
-
сомфя215.05.2020 05:34
-
markelovakristi18.03.2022 12:32
-
Smpl27.10.2021 21:22
-
AcidSmile13.01.2023 09:15
-
twicгр6601.07.2022 16:15
-
voborocha15.01.2022 11:06
-
ivnna201301.04.2020 00:58
-
Рахаумник14.08.2021 17:44
-
тимур62401.06.2022 20:22
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.