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

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

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

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

25.09.2012, 17:37. Просмотров 460. Ответов 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 ищу кол-во компонент связности, это и будет ответом

что у меня не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2012, 17:37     НЛО и графы
Посмотрите здесь:

Графы - C++
Суть задачи: дан ориентированный граф, у которого каждая вершина (не ребро) имеет вес. Нужно найти путь из любой точки в любую, но чтобы он...

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

Графы - C++
Решается судьба степеньдии от этих задач, помогите пожалуйста. 1) Для неориентированого графа определить степени вершин. В случае...

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

Графы - C++
помогите пожалуйста написать программу удаления вершины: а)с сохранением связей б)без сохранения связей желательно на с билдер

*Графы* - C++
пожалуйсто помоги мне с программой.умоляю!!! вот тема: реализация различных типов графов и операций над ними. зараннее спасибо.

Графы - C++
Написать на C++ класс, описывающий граф/орграф. Класс должен поддерживать следующую функциональность: • определение числа вершин; ...

Графы на С++ - C++
Помогите плиз! Есть задача: Посвящение в студенты.Есть n студентов.НЕ ВСЕ знают друг друга.Но у каждого есть знакомые..Действует...

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

Нарисовать графы - C++
Всем привет. Ребят, очень нуждаюсь в помощи по задачке. Задали, а я что-то никак не могу сообразить, как такое можно провернуть. Наметки...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
25.09.2012, 17:40     НЛО и графы #2
Можете условие скопипастить? у меня по ссылке пишет, что задача не найдена.
Yandex
Объявления
25.09.2012, 17:40     НЛО и графы
Ответ Создать тему
Опции темы

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