Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 26.06.2021
Сообщений: 8
1

Веселые Ребята

29.06.2021, 11:34. Показов 1532. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Веселые ребята решили организовать сборы для программистов. Первое, что им нужно было сделать, так это составить задачи для отбора. Однако составлять задачи в одиночку не интересно, поэтому каждый из n составителей мог открыть чат с несколькими другими составителями, а мог и не открывать чатов. Мессенджер составителей работает так, что если составитель А открыл чат с составителем Б, то и у Б он откроется автоматически. Известно между какими составителями уже открыты чаты. Разузнайте, какое минимальное количество чатов нужно открыть дополнительно, чтобы любой составитель мог передать сообщение любому другому посредством открытых чатов (составители могут пересылать сообщения из чата в чат).

Входные данные:
В первой строке входных данных дается два числа разделенных пробелом n и m (1≤n,m≤100) - количество составителей и количество открытых чатов между ними. В следующих m строках дается по два числа x,y (1≤x,y≤100) - номера составителей между которыми открыт чат.

Выходные данные:
Выведите минимальное количество чатов которое нужно открыть, чтобы можно было переслать сообщение посредством открытых чатов

Пример 1:
Входные данные:
5 2
1 2
3 4
Выходные данные:
2

Пример 2:
Входные данные:
5 1
1 2
Выходные данные:
3

Пример 3:
Входные данные:
5 4
1 2
2 3
3 4
4 5
Выходные данные:
0
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2021, 11:34
Ответы с готовыми решениями:

Веселые ребусы...
Условие: Составить алгоритм решения ребуса "ДРУГ-ГУРД=2727" (различные буквы означают различные...

Практика ребята!
1->С помощью функции произвести пересчёт расстояния из верст километры (1 верста-это 1066.8). ...

Ребята сос
Помогите 6.3.1 И 6.3.2

Ребята , функции)
Ребята выручайте! 4.Дан числовой массив X. Определить min (X, X, … , X) + min (X, X, … , X)...

4
392 / 262 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
30.06.2021, 15:14 2
Попробуйте построить граф, вершины которого - составители, а ребра - чаты. Тогда ответом будет количество компонент связности этого графа. Этот алгоритм можно найти в интернете, например на emaxx.
0
0 / 0 / 0
Регистрация: 26.06.2021
Сообщений: 8
30.06.2021, 21:25  [ТС] 3
Цитата Сообщение от LegionK Посмотреть сообщение
Попробуйте построить граф, вершины которого - составители, а ребра - чаты. Тогда ответом будет количество компонент связности этого графа. Этот алгоритм можно найти в интернете, например на emaxx.
можете скинуть ссылку, не смог найти
0
Вездепух
Эксперт CЭксперт С++
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,067
30.06.2021, 22:21 4
Цитата Сообщение от LegionK Посмотреть сообщение
Тогда ответом будет количество компонент связности этого графа.
Ответом будет количество компонент связности этого графа минус 1.
0
392 / 262 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
30.06.2021, 22:24 5
Лучший ответ Сообщение было отмечено 85959594 как решение

Решение

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
56
57
58
59
#include <iostream>
#include <vector>
 
using namespace std;
 
int n,m;
vector<vector<int>>v;
 
int cnt = 0;
vector<int>used;
 
void dfs(int x){
 
    used[x] = 1;
 
    for(int i = 0;i<v[x].size();++i){
 
        int t = v[x][i];
 
        if(!used[t])dfs(t);
 
    }
 
}
 
 
int main()
{
    cin >> n >> m;
 
    v.resize(n); used.resize(n);
 
    for(int i = 0;i<m;++i){
 
        int a,b;
        cin >> a >> b;
 
        --a; --b;
 
        v[a].push_back(b);
        v[b].push_back(a);
 
    }
 
    for(int i = 0;i<n;++i){
 
        if(!used[i]){
 
            ++cnt;
 
            dfs(i);
        }
 
    }
 
    cout << cnt-1;
 
    return 0;
}
Добавлено через 12 секунд
TheCalligrapher, согласен.
0
30.06.2021, 22:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2021, 22:24
Помогаю со студенческими работами здесь

Ребята не могу разобраться
Учусь на заочке ни че не понмиаю, а завтра экзамен буддте добры помогите....

Ребята переведите с Паскаля на си++ п л с
Program Proc44; function Arctg(x,e:real):real; var dx,y,t:real; i:integer; begin dx:=x;...

Turbo C++ Ребята Здравствуйте!
Turbo C++ Ребята Здравствуйте! Прошу у вас помощи, буду очень признательна! мне надо решить с...

В чем problem ребята?
C:\Program Files\Microsoft Visual Studio\MyProjects\1\2.cpp(3) : error C2146: syntax error :...

Ребята обьясните ошибку(
Значит суть такова работа в Dev C++ на ходит 2 ошибки( Сильно не гурайтесь я еещ нуб 1) 11.cpp In...

Ребята, как составить массив?
Помогите создать данный массив, как на прикрепоённом изображение. Необходимо, чтобы программа...


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

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