Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
A1sen
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 6
#1

Рассчитать время, нужное, чтобы добраться до ближайшего из эвакуационных выходов (файловый ввод/вывод) - C++

18.04.2013, 02:27. Просмотров 556. Ответов 4
Метки нет (Все метки)

Эвакуация
Одна из Сверхсекретных организаций, чье название мы не имеем право разглашать, представляет собой сеть из N подземных бункеров, соединенных равными по длине туннелями, по которым из любого бункера можно добраться до любого другого (не обязательно напрямую). Связь с внешним миром осуществляется через специальные засекреченные выходы, которые расположены в некоторых из бункеров.
Организации понадобилось составить план эвакуации персонала на случай экстренной ситуации. Для этого для каждого из бункеров необходимо узнать, сколько времени потребуется для того, чтобы добраться до ближайшего из выходов. Вам, как специалисту по таким задачам, поручено рассчитать необходимое время для каждого из бункеров по заданному описанию помещения Сверхсекретной организации. Для вашего же удобства бункеры занумерованы числами от 1 до N.
Формат входных данных
Сначала вводятся два натуральных числа N, K (1 ≤ N ≤ 100000, 1 ≤ K ≤ N) — количество бункеров и количество выходов соответственно.
Далее через пробел записаны K различных чисел от 1 до N, обозначающих номера бункеров, в которых расположены выходы.
Потом идёт число M (1 ≤ M ≤ 100000) — количество туннелей. Далее вводятся M пар чисел – номера бункеров, соединенных туннелем. По каждому из туннелей можно двигаться в обе стороны. В организации не существует туннелей, ведущих из бункера в самого себя, зато может существовать более одного туннеля между парой бункеров.
Формат выходных данных
Выведите N чисел, разделенных пробелом — для каждого из бункеров минимальное время, необходимое чтобы добраться до выхода. Считайте, что время перемещения по одному туннелю равно 1.
Пример
Input.txt
10 2
10 8
9
6 7
7 5
5 8
8 1
1 10
10 3
output.txt
1 4 1 2 1 3 2 0 3 0

Добавлено через 5 минут
Я надеюсь на вас, о Боги киберфорума :\
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2013, 02:27     Рассчитать время, нужное, чтобы добраться до ближайшего из эвакуационных выходов (файловый ввод/вывод)
Посмотрите здесь:

Рассчитать значение функции, используя массив (файловый ввод/вывод) - C++
Дается массив из след.элементов(44 штуки):...

Рассчитать силу сопротивления воздуха и перемещение капельки (файловый ввод/вывод) - C++
Помогите. Препод думает, что я умная. Помогите. В общем, есть задача, где умная капелька знает свою массу, скорость и время, в которое она...

Добиться, чтобы была ошибка открытия файла (файловый ввод/вывод) - C++
Здравствуйте! Вот небольшая прога которая по идее должна ждать пока файл не будет доступен и произвести в него запись int main() { ...

Поменять консольный ввод-вывод на файловый ввод-вывод - C++
вот у меня калькулятор как мне сделать что б числа вводились из файла и результат записывался в новый файл ? // ОБРАТНАЯ...

Поиск в массиве структур по заданному полю и вывод в алфавитном порядке (файловый ввод/вывод) - C++
Помогите с функцией void runFile() что бы с файла брал и выводил в алфавитном порядке список товаров, хранящихся больше месяца, стоимость...

Вывод суммы в файл (файловый ввод/вывод) - C++
Добрый день! Я пытался написать программу, которая должна вводить данные из файла №1, потом вычислять их сумму и полученное значение...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
18.04.2013, 09:07     Рассчитать время, нужное, чтобы добраться до ближайшего из эвакуационных выходов (файловый ввод/вывод) #2
составление плана эвакуации для столь сверхсекретной организации с 0, требует расходов. Наверняка ваши экономисты составили смету, и могут заказать работу на фрилансе.
если же вам нужна помощь киберсекретной консультативной организации, по составлению плана эвакуации, то наши специалисты ждут ваших наработок, чтоб было на что посмотреть
shuffle
19 / 19 / 1
Регистрация: 30.03.2013
Сообщений: 35
18.04.2013, 16:20     Рассчитать время, нужное, чтобы добраться до ближайшего из эвакуационных выходов (файловый ввод/вывод) #3
У вас некорректные входные данные. M (количество пар) равно 9, а самих пар только 6.

Решение примерно такое:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#include <iterator>
using namespace std;
 
int main()
{
    ifstream in("input.txt");
    ofstream out("output.txt");
 
    int N, K;
    in >> N >> K;
 
    vector<int> bunkers;
    bunkers.resize(K);
    for (int i = 0; i < K; ++i) {
        in >> bunkers[i];
        --bunkers[i];
    }
 
    int M;
    in >> M;
 
    vector< vector<int> > tunnels(N, vector<int>());
    for (int i = 0; i < M; ++i) {
        int a, b;
        in >> a >> b;
        tunnels[a - 1].push_back(b - 1);
        tunnels[b - 1].push_back(a - 1);
    }
 
    vector<int> dist(N, -1);
    queue<int> path;
    for (int i =  0; i < K; ++i) {
        path.push(bunkers[i]);
        dist[bunkers[i]] = 0;
    }
 
    while (!path.empty()) {
        int v = path.front();
        path.pop();
 
        for (int i = 0; i != tunnels[v].size(); ++i) {
            if (dist[tunnels[v][i]] < 0) {
                dist[tunnels[v][i]] = dist[v] + 1;
                path.push(tunnels[v][i]);
            }
        }
    }
 
    copy(dist.begin(), dist.end(), ostream_iterator<int>(out, " "));
    return 0;
}
A1sen
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 6
20.04.2013, 02:38  [ТС]     Рассчитать время, нужное, чтобы добраться до ближайшего из эвакуационных выходов (файловый ввод/вывод) #4
о спасибо
сердечно благодарю ))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2015, 15:37     Рассчитать время, нужное, чтобы добраться до ближайшего из эвакуационных выходов (файловый ввод/вывод)
Еще ссылки по теме:

Файловый ввод / вывод - C++
Здравствуйте, у меня такой вопрос: необходимо прочитать символы из файла и ввести их в символьный массив f построчно. Первая строка...

Файловый ввод и вывод - C++
Посмотрел примеры сложения двух чисел на С++. Никак не пойму: где нужно создавать этот текстовый файл? Создал в папке, где проект, так...

Файловый ввод и вывод на С++ - C++
Написать программу, создающую файл 1.txt и записывающую в него информацию, вводимую с клавиатуры пользователем. Затем проверить какие...

Файловый ввод / вывод - C++
Помогите пожалуйста с задачей: Записать в файл F последовательного доступа n натуральных чисел. Получить в другом файле последовательного...

файловый ввод-вывод - C++
Требуется помощь Имеется исходный текстовый файл: 7 1 198 50 40.5 36.2 48 33.5 2 190 48.5 47 60 39.3 28 3 196 46.4 51 39.8 36.5...

Файловый ввод/вывод в С++ - C++
1. Дан файл. В нем записана матрица 10 на 10, состоящая из вещественных чисел. Считать с файла эту матрицу. Транспонировать и вывести в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
FilkinMaksim
0 / 0 / 0
Регистрация: 22.11.2015
Сообщений: 7
30.12.2015, 15:37     Рассчитать время, нужное, чтобы добраться до ближайшего из эвакуационных выходов (файловый ввод/вывод) #5
Извини, а не можешь рассказать алгоритм пожалуйста
Yandex
Объявления
30.12.2015, 15:37     Рассчитать время, нужное, чтобы добраться до ближайшего из эвакуационных выходов (файловый ввод/вывод)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru