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

Игры на графах

20.09.2016, 00:06. Показов 1918. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста 😊
Имя входного файла: стандартный ввод
Имя выходного файла: Стандартный вывод
Ограничение по времени:1 секунда
Ограничение по памяти:64 мегабайт
Даны два ориентированных ациклических графа. В начале игры в каждом из графов в начальной позиции (одной из вершин) стоит фишка. За один ход игрок двигает обе фишки по ребрам (каждую фишку в своем графе соответственно). Проигрывает тот, кто не может сделать ход (то есть тот, кто не может сделать ход хотя бы в одном графе).
Нужно определить победителя при правильной игре.
Формат входного файла
Первая строка содержит два числа N1 и М1 (1 ≤ N1, М1 ≤ 105) – количество вершин и ребер первого графа. В следующих М1 строках содержатся по два числа x, y – описание ребер.
Дальше в таком же формате идет описание второго графа.
Заканчивается ввод списком пар начальных позиций вершин, для которых необходимо определить победителя. Первая строка содержит число K (1 ≤ K ≤ 105) – количество пар исходных вершин. Каждая из последующих K строк содержит по два числа – пары вершин. Учтите, что в графе могут быть кратные ребра.
Формат выходного файла
Для каждой пары начальных вершин необходимо вывести 1, если при правильной игре выигрывает первый игрок, и 2, если
выигрывает второй.
Заранее,большое спасибо)
Если можно ещё напишете комментарии что за что отвечает)
Помогите пожалуйста 🙏🏼
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2016, 00:06
Ответы с готовыми решениями:

Задача о графах
Помогите решить или объясните как написать код к данной программе. Имеется N точек и M проводков. Проводком можно соединить некоторую...

Вопросы о графах
Всем привет! Появилось несколько вопросов о графах: 1) Как представить граф в C++? 2) Как найти самый краткий путь между двумя...

Алгоритмы на графах
Изолированные города В государстве N городов с номерами 1.2….N. Некоторые города связаны между собой дорогами и образуют штат. Сколько...

2
Эксперт .NET
 Аватар для Usaga
14127 / 9347 / 1350
Регистрация: 21.01.2016
Сообщений: 35,125
20.09.2016, 04:47
Выкладывай свои наработки
0
0 / 0 / 1
Регистрация: 24.02.2014
Сообщений: 17
20.09.2016, 23:10  [ТС]
Лучший ответ Сообщение было отмечено Дмитрий3105 как решение

Решение

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
#include "stdafx.h"
#include <math.h>
#include <conio.h>
#include <iostream>
using namespace std;
 
void zapolnenie(double m[][100],int n);
 
int prov(int pk[], int d[], int n);
 
int prov(int pk[], int d[],int n)
{
    int s = 0;
 
    for(int i = 1; i<=n; i++)
 
        if(pk[i] != d[i])
 
            s++;
 
    if( s == 0)
 
        return 1;
 
    else
 
        return 0;
 
}
 
void zapolnenie(double m[][100],int n)
{
    for (int i = 1; i <= n; i++)
    {
        cout << " для вершины х"<<i<<": " ;
 
        for (int j = 1; j <= n; j++)
        {       
 
            cin >> m[i][j];
 
            if( m[i][j] == 0)
 
                m[i][j] = 100000;
        }
 
        cout << endl;
    }
 
 
 
 
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL,"Russian");
 
    double m[100][100];
 
 
    int n;
 
    cout << "введите количество вершин графа: ";
 
    cin >> n;
 
    
    zapolnenie(m,n);
 
    
    
    int s;
 
    cout << "введите начальную вершину "<<endl;
 
    cin >> s; int  v1er = s;
 
    int ss;
 
    cout << "введите конечную вершину "<<endl;
 
    cin >> ss;
 
    int mm;
 
    int min;
 
    int d[100];
 
    int pk[100];
 
    d[s]= 0;
 
 
    int v[100];
 
    int k =0;
 
    v[k] = s;
 
    k++;
 
 
 
 
    for(int i = 1; i<=n; i++)
    {
        if(d[i] != d[s])
 
            d[i] = 1000;
    }
 
 
 
 
 
    for(int i = 1; i <=n; i++)
 
        if(d[i] != d[s])
        {
            min = d[i];
 
            break;      
        }
 
 
    
    do {
 
 
    for(int i = 1; i<=n; i++)
 
        pk[i] = d[i];
 
 
 
 
 
    for(int i = 1; i <=n; i++)
 
        if(i != s)
        {
            if(d[i] > d[s] + m[s][i])
            {
                min = d[s] + (int)m[s][i];
 
                d[i] = min;
            }
 
        }
 
 
    int prom = 0;
 
    for(int i = 1; i <= n; i++)
    {
        if(i != s)
        {
            for(int j = 0; j <k; j++)
            {
                if(v[j] == i)
 
                    prom ++;
            }
 
            if (prom == 0)
            {
                min = d[i];
 
                break;
            }
 
            prom = 0;
            
            
            }
 
        
 
                
        
        }
 
 
    prom = 0;    
 
    for(int i = 1; i <= n; i++)
 
        if( i != s)
        {
            for(int j = 0; j <k; j++)
            {
                if(v[j] == i)
 
                    prom ++;
            }
 
            if( prom == 0)
            {
                    if( min >= d[i])
                    {
                        min = d[i];
 
                        s = i;
 
                        prom = 0;
                    }
 
            }
 
            prom = 0;
        
        }
 
    
 
 
    v[k] = s;
 
    k++;
 
     mm = prov(pk, d, n);
 
    }
 
    while( mm != 1 );
 
    cout << "из вершины "<< v1er <<" в вершину "<< ss <<" через вершины :"; 
 
    for(int i = 0; i < k - 1; i++)
 
        cout << " --> "<< v[i];
 
    cout << endl << " кратчайший путь = "<<d[ss];
 
 
 
    getch();
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.09.2016, 23:10
Помогаю со студенческими работами здесь

Задания по графах
1) Узнать не пустой ли граф 2) Запретить работу если начало и конец графа однаковы Правильно ли я сделала? if ((edge.mStart...

BFS и DFS в графах
Не могу понять почему при обходе графа в ширину (void bfs или void bfs1) выдает пустые результаты Вершин графа 5, ребер 4, координаты...

Пару слов о графах (DFS)
во всех примерах что я видел пока, оперируют такой фразой как - КОЛИЧЕСТВО ВЕРШИН ГРАФА! например при инициализации массива used уже надо...

ГА на графах
Здравствуйте. Не могу разобраться как решать эту задачу. Используйте генетический алгоритм (для одного поколения, при размере...

Сборка ПК "для себя" - игры, игры, игры! Киев, бюджет 8300 грн с монитором.
Всем доброго времени суток. 1. Бюджет примерно 8300 грн (с монитором) 2. Украина, г. Киев, намерен покупать на http://rozetka.com.ua/...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru