0 / 0 / 0
Регистрация: 29.10.2017
Сообщений: 1
1

Задача в C++ на графы

29.10.2017, 19:54. Показов 1244. Ответов 0
Метки с (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите решить на С++


Есть n городов. Они соединяются с помощью m дорог. Дорога соединяет два города между собой.

Города A и B находятся в одной сети городов, если машина от сервера A может по рабочим дорогам доехать до города B, возможно проходя при этом через промежуточные города. Если город может соединиться только с собой, то считается, что он сам по себе представляет сеть городов.

В строительной компании появились нарушители, которые начали ломать дороги. Пока ваш напарник поехал за правительством, вам поручили посчитать полученный ущерб компании. Вам нужно ответить, сколько всего сетей городов в компании возникало после выведения каждой дороги из строя.

Формат входных данных
В первой строке вводится целое число n (2≤n≤3⋅10^5) - количество городов в компании.

Во второй строке вводится целое число m (1≤m≤3⋅10^5) - количество дорог.

В следующих m строках вводятся пары различных чисел a,b (1≤a,b≤n) номера городов, которые соединяет i-ая дорога.

В следующей строке вводится число q (1≤q≤m) количество сломанных дорог.

В следующей строке вводится q различных чисел – номера сломанных дорог. Все номера различны и идут в хронологическом порядке.

Формат выходных данных
Выведите q чисел, количество различных сетей городов после выведения из строя следующего города.

Примечание
Первый пример: после удаления первой дороги все города все еще находятся в одной сети городов. После удаления второй дороги, сеть городов разбивается на две части: города 1,3 и город 2.

Sample Input 1:
3
3
1 2
2 3
1 3
2
1 2
Sample Output 1:
1 2
Sample Input 2:
4
3
1 2
1 4
4 2
1
3
Sample Output 2:
2

Добавлено через 48 минут
Вроде сделал, но что-то не так


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
#include <iostream>
 
using namespace std;
 
int main()
{
  int n,m,q,otv=0,sum=0;
  cin>>n;
  cin>>m;
  int a[m][2];
  for(int i=0;i<m-1;i++)
 {
    cin>>a[i][0];
    cin>>a[i][1];
 }
  cin>>q;
  int b[q];
  for(int i=0;i<q-1;i++)
    cin>>b[i];
    for(int z=0;z<q-1;z++)
    {
        for(int g=0;g<m-1;g++)
        {
          if(a[g][0] == b[z] || a[g][1] == b[z])
         {
             a[g][0]=0;
             a[g][1]=0;
        }
        }
        sum=0;
    for(int j=1;j<m;j++)
    {
        otv=0;
    for(int i=0;i<m-1;i++)
    {
        if((a[i][0] == j && a[i][1] == j+1) || (a[i][1] == j && a[i][0] == j+1))
        {
            otv=1;
        break;
        }
    }
    if(otv == 1)
       sum++;
    }
    cout<<sum;
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2017, 19:54
Ответы с готовыми решениями:

Задача на графы
Помогите, пожалуйста, дана задача Произвести обход графа, начиная от данной вершины, в ширину,...

Задача про графы
помогите если не сложно Тексты нужно переписывать в тело сообщения!

Интересная задача на графы
Помогите решить. Никак не могу придумать способ. Мне говорят, что на графы, а связать это с графами...

Непростая задача на графы.
Здравствуйте! Необходимо решить такую задачу: Антон работает в межгалактическом туристическом...

0
29.10.2017, 19:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2017, 19:54
Помогаю со студенческими работами здесь

задача про графы
Написать программу отыскания кратчайших путей между всеми парами вершин ориентированного графа по...

Логическая задача (графы)
Буду очень рад каким-нибудь подсказкам(советам) по поводу решения этой задачи. Найдите в этом...

Задача на графы. Удалить ребро, соединяющее вершины a и b
Дан граф, состоящий из N вершин и заданный списком смежности. Удалить ребро, соединяющее вершины a...

Несложная задача на графы - возможная утечка памяти
Здравствуйте, уважаемые форумчане и всех с наступившим Новым годом! Пытаюсь сдать задачу по этой...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru