С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
#1

НЛО и графы - C++

25.09.2012, 17:37. Просмотров 491. Ответов 1
Метки нет (Все метки)

Доброго времени суток.

Не могу сдать эту задачу:

В маленьком городке М начала действовать служба контроля за незаконными полетами НЛО. Первая задача службы - выяснить, сколько НЛО действует в окрестности города.

Агенты службы опросили множество свидетелей и составили список случаев встречи с НЛО, произошедших за одни сутки, с указанием места и времени наблюдения.

Теперь аналитики хотят понять, сколько же на самом деле было НЛО. Из данных разведки известна максимальная скорость, с которой может лететь НЛО. Аналитики просят вас узнать, какое минимальное количество НЛО могли наблюдать свидетели.

Входные данные

На первой строке входного файла INPUT.TXT содержатся целые числа n и v - количество случаев наблюдения и максимальная скорость НЛО (1 ≤ n ≤ 100, 1 ≤ v ≤ 10000). Следующие n строк содержат описания случаев встречи с НЛО в формате «ЧЧ:ММ x y», где ЧЧ:ММ – время встречи, x и y - координаты места, в котором наблюдался НЛО (для простоты будем считать, что все встречи происходили на плоскости). Координаты по модулю не превышают 1000. Скорость выражена в км/ч, координаты - в км.

Выходные данные

В выходной файл OUTPUT.TXT выведите одно число - минимальное возможное количество НЛО.

Собственно, сам код:

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 <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
#include <cstdlib>
#include <string>
#include <cstdio>
 
using namespace std;
 
vector<int> g;
 
bool comp(place a, place b){
    return a.s < b.s;
}
 
void dfs(int x,bool* a){
    a[x] = true;
        if(g[x]!= -1 && !a[g[x]])
            dfs(g[x],a);
}
 
int main(){
  freopen("input.txt","r",stdin);
  freopen("output.txt","w",stdout);
  int n,v,ans = 0;
  cin >> n >> v;
  vector<place> ufo(n);
  g.resize(n);
  for(int i = 0; i < n; ++i)
      g[i] = -1;
  for( int i = 0; i < n; ++i)
    cin >> ufo[i].s >> ufo[i].x >> ufo[i].y;
  sort(ufo.begin(),ufo.end(),comp);
  bool *used = new bool[n];
  for(int i = 0; i < n; ++i)
    used[i] = false;
  for(int i = 0; i < n - 1; ++i)
    for(int j = i + 1; j < n; ++j){
      int h1 = (ufo[j].s[0]-'0')*10 + ufo[j].s[1] - '0', h2 = (ufo[i].s[0]-'0')*10 + ufo[i].s[1] - '0';
      int m1 = (ufo[j].s[3]-'0')*10 + ufo[j].s[4] - '0', m2 = (ufo[i].s[3]-'0')*10 + ufo[i].s[4] - '0';
      if((((h1-h2)*60 + m2 - m1)*v)*(((h1-h2)*60 + m2 - m1)*v) >= 3600*((ufo[j].x-ufo[i].x)*(ufo[j].x-ufo[i].x) + (ufo[j].y - ufo[i].y)*(ufo[j].y - ufo[i].y))&& g[j] == -1){
        g[i] = j;
        g[j] = 0;
        break;
        }
    }
  for(int i = 0; i < n; ++i)
      if(!used[i]){
          dfs(i,used);
          ans+=1;
      }
  cout << ans << endl;
  return 0;
}
План таков:
1.сортирую по времени
2.делаю граф(вершины - координаты встречи, рёбра соединяют ближайшие точки встречи, в которых мог быть один НЛО)
3. с помощью dfs ищу кол-во компонент связности, это и будет ответом

что у меня не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2012, 17:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос НЛО и графы (C++):

Графы - C++
Помогите пожалуйста решить одну задачку. Буду очень благодарен! Спасибо заранее, огромное! Задана строка s. За один ход можно поменять...

С++ и графы - C++
Доброго времени суток. Хотел бы попросить помощи в написании программы. Нужно создать программу которая будет проводить расчет сетевого...

Графы - C++
Всем привет! Пишу в принципе год, но с графами не сталкивался, поэтому нужна помощь. Вообщем вопросы, интересующие меня: что есть граф и с...

Графы - C++
помогите с реализацией алгоритма Дейкстры для нахождения расстояния от узла 1 в каждый узел. матрица весов такая...

Графы - C++
Написать программу, реализующую алгоритм Беллмана-Форда.

Графы в С++ - C++
Как можно в программу на С++ ввести граф??моей задачей является определить оптимальное расположение остановок в городе,ну и город в виде...

1
I.M.
566 / 549 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
25.09.2012, 17:40 #2
Можете условие скопипастить? у меня по ссылке пишет, что задача не найдена.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2012, 17:40
Привет! Вот еще темы с ответами:

Графы - C++
Прочитал про обход графа в глубину, посмотрел реализацию, и тут вопрос а как можно использовать этот обход в глубину?

Графы - C++
1) Построить граф, используя язык С++ (или Си), согласно данной схеме на рис.1. 2) По запросу пользователя должны удаляться: • все...

Графы - C++
Люди скиньте пожалуйста какую нибудь программку на С++ по графам, или дайте ссылку на темку на форему...

Графы - C++
Дано прямоугольное клеточное поле; как создать матрицу смежности для графа ферзей?


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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