Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 17.02.2024
Сообщений: 7

Проверка графа на двудольность

15.07.2024, 00:55. Показов 6836. Ответов 41

Студворк — интернет-сервис помощи студентам
Нужно решить олимпиадную задачу "Проверка на двудольность"
Пытался решить эту задачу, выдает wa5, не могу понять, в чем может быть проблема
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
#include<bits/stdc++.h>
#define int long long
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("fast-math")
 
using namespace std;
 
vector<int> parent, rank_;
 
int find(int u) {
    if (u != parent[u])
        parent[u] = find(parent[u]);
    return parent[u];
}
 
void union_sets(int u, int v) {
    u = find(u);
    v = find(v);
    if (u != v) {
        if (rank_[u] < rank_[v])
            swap(u, v);
        parent[v] = u;
        if (rank_[u] == rank_[v])
            rank_[u]++;
    }
}
 
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
 
    int n, m;
    cin >> n >> m;
 
    parent.resize(n + 1);
    rank_.resize(n + 1, 0);
    for (int i = 1; i <= n; ++i)
        parent[i] = i;
 
    vector<int> color(n + 1, -1);
    bool is_bipartite = true;
 
    for (int i = 0; i < m; ++i) {
        int u, v;
        cin >> u >> v;
 
        if (find(u) == find(v)) {
            if (color[u] == color[v]) {
                is_bipartite = false;
            }
        } else {
            union_sets(u, v);
            if (color[u] == -1 && color[v] == -1) {
                color[u] = 0;
                color[v] = 1;
            } else if (color[u] == -1) {
                color[u] = 1 - color[v];
            } else if (color[v] == -1) {
                color[v] = 1 - color[u];
            } else if (color[u] == color[v]) {
                is_bipartite = false;
            }
        }
 
        cout << is_bipartite;
    }
 
    cout << endl;
    return 0;
}
ЗАДАЧА:
В неориентированный граф последовательно добавляются новые ребра. Изначально граф пустой. После каждого добавления нужно говорить, является ли текущий граф двудольным.
Входные данные:
На первой строке n — количество вершин, m— количество операций «добавить ребро». Следующие m строк содержат пары чисел от 1 до n — описание добавляемых ребер.
Выходные данные:
Выведите в строчку m нулей и единиц. i-й символ должен быть равен единице, если граф, состоящий из первых i ребер, является двудольным.
Пример входных данных:
3 3
1 2
2 3
3 1
Тогда выход:
110
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.07.2024, 00:55
Ответы с готовыми решениями:

Для графа определить его двудольность и вывести обе доли (исправить программу)
помогите исправить программу! запускается, на файл вывода пуст... а когда раскоментирываю - не компилруется... вот код: #include...

Проверка на двудольность
Граф является двудольным,если у него нет циклов нечетной длины,проще говоря если мы раскрасим стартовую вершинку,например,в...

Проверка на неориентированность графа
По заданной квадратной матрице n×n из нулей и единиц определить, может ли она быть матрицей смежности простого неориентированного графа....

41
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,350
16.07.2024, 17:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от SmallEvil Посмотреть сообщение
Из условия задачи.
Слово "последовательно" в условии задачи говорит лишь о том, что информацию о двудольности графа нужно выводить после добавления каждого индивидуального ребра. Ни о какой связи каждого нового ребра с предыдущими тут речи не идет. Ничего подобного в условии задачи нет. Каждое новое ребро добавляется куда угодно и как угодно.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
16.07.2024, 17:34
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Слово "последовательно" в условии задачи говорит лишь о том, что информацию о двудольности графа нужно выводить после добавления каждого индивидуального ребра.
Процитированная мной часть задачи относится именно к вводу, при чем тут вдруг вывод ?
В любом случае, понимайте как хотите.

Добавлено через 1 минуту
Суть в том, что если граф вдруг является несвязным, то ни о каком свойстве графа (одного) не может идти и речи.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,350
16.07.2024, 17:40
Цитата Сообщение от SmallEvil Посмотреть сообщение
В любом случае, понимайте как хотите.
Никаких неоднозначностей в понимании условия задачи ни у кого не возникло. Задача сформулирована однозначно, никакого простора для "понимайте как хотите" тут нет.

Вам явно нечем заняться.

Цитата Сообщение от SmallEvil Посмотреть сообщение
Суть в том, что если граф вдруг является несвязным, то ни о каком свойстве графа (одного) не может идти и речи.
Что это за бред сивой кобылы? Что такое "одного"? Вам нужно ознакомиться хотя бы с базовыми понятиями теории графов.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
16.07.2024, 18:24
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Что это за бред сивой кобылы?
Ну-ну ))

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Что такое "одного"? Вам нужно ознакомиться хотя бы с базовыми понятиями теории графов.
Когда пишут граф, это всегда связный граф, если не указано обратное.

Добавлено через 5 минут
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Вам явно нечем заняться.
Взаимно.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,350
17.07.2024, 00:05
Цитата Сообщение от SmallEvil Посмотреть сообщение
Когда пишут граф, это всегда связный граф, если не указано обратное.
Нет, ни в коем случае. Никакой связности графа по умолчанию никогда не предполагается.

Это даже не говоря уже о том, что в данной задаче изначально однозначно постулируется несвязность рассматриваемого графа.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6329 / 3057 / 1054
Регистрация: 01.06.2021
Сообщений: 11,675
17.07.2024, 07:05
Цитата Сообщение от TheCalligrapher
в данной задаче изначально однозначно постулируется несвязность рассматриваемого графа
How?

Как по мне, условие однозначно только в том, что граф неориентированный.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,350
17.07.2024, 07:28
Цитата Сообщение от Royal_X Посмотреть сообщение
How?
Изначально граф состоит из n изолированных вершин, т.е. не имеет ни одного ребра. Это - несвязный граф.

И пока в граф не будет добавлено как минимум n-1 ребер, он будет оставаться несвязным.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6329 / 3057 / 1054
Регистрация: 01.06.2021
Сообщений: 11,675
17.07.2024, 09:53
Цитата Сообщение от TheCalligrapher
Изначально граф состоит из n изолированных вершин, т.е. не имеет ни одного ребра. Это - несвязный граф.
Нет. Изначально он пустой.

А вот будет ли он несвязным, это зависит от

На первой строке n — количество вершин, m— количество операций «добавить ребро». Следующие m строк содержат пары чисел от 1 до n — описание добавляемых ребер.
Учитывая, что все зависит от пользователя, который вводит данные, то граф может быть как несвязным, так может быть и связным перед первой проверкой...
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
17.07.2024, 14:23
TheCalligrapher,
Допустим, лишь допустим, что ребра будут вводится с любыми вершинами [1,n].
Изолированные вершины нам погоды не делают, игнорируем.
Теперь логичный вопрос : будет ли считаться (несвязный) граф двудольным, если он имеет имеет компоненты, связные двудольные графы?
Лично мне сложно представить себе утвердительный ответ.
Поэтому, при утвердительном ответе, желательно с пояснением и доказательством.

В любом случае, алгоритм от базового, мало чем отличется, кроме того, что вместо двух групп вершин, будем хранить по две группы для каждой компоненты (назначать им различные пары цветов) и при их сопряжениии очередным ребром, производить слияние.
По прежнем граф хранить не нужно, лишь группы двудольных связных графов (компонентов).
Задача как была упрощенной, так и осталась.
Более сложная, когда ребра ещё и удаляются.

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

И на этом, эту помойку (тему), можно закопать.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,350
17.07.2024, 16:14
Цитата Сообщение от Royal_X Посмотреть сообщение
Нет. Изначально он пустой.
ОК, соглашусь, ибо в условии задачи это сказано открытым текстом. Единственная интерпретация такого условия: вершин изначально нет, они "материализуются" по мере появления инцидентных им ребер.

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

Цитата Сообщение от Royal_X Посмотреть сообщение
А вот будет ли он несвязным, это зависит от
Учитывая, что все зависит от пользователя, который вводит данные, то граф может быть как несвязным, так может быть и связным перед первой проверкой...
Тут уже какая-то чушь написана. Первая проверка, согласно условию задачи, делается после добавления первого ребра. Каким образом граф, состоящий из одного ребра и двух инцидентных ему вершин может быть несвязным?

Добавлено через 10 минут
---

Цитата Сообщение от SmallEvil Посмотреть сообщение
Теперь логичный вопрос : будет ли считаться (несвязный) граф двудольным, если он имеет имеет компоненты, связные двудольные графы?
Разумеется, будет. Будет ли считаться граф двудольным зависит только то того, соответствует ли он определению двудольного графа. Точка.

Цитата Сообщение от SmallEvil Посмотреть сообщение
Лично мне сложно представить себе утвердительный ответ.
Это - ваша проблема.

Цитата Сообщение от SmallEvil Посмотреть сообщение
Поэтому, при утвердительном ответе, желательно с пояснением и доказательством.
Не может быть никаких доказательств определений. Никогда и нигде в теории графов не существовало даже отдаленного намека на то, что термин "граф" как-то синонимичен термину "связный граф". Пока вы не избавитесь об этого непонятно откуда взявшегося морока, дело дальше не пойдет.

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

Цитата Сообщение от SmallEvil Посмотреть сообщение
В любом случае, алгоритм от базового, мало чем отличется...
Это задача очевидным образом ориентирована на тему хранения и операций над непересекающимися множествами (disjoint sets). Именно эту классическую тему из Ахо-Ульмана и т.п. (а отнюдь не теорию графов), я почти уверен, проходил в это время (пропавший?) ТС. Нужно только слегка остроумно модифицировать эти операции, чтобы приспособить их к задаче проверки двудольности. Так что "базовый алгоритм" тут уже сразу натуральным образом будет посвящен несвязным графам.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
17.07.2024, 16:17

Не по теме:


Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Никогда и нигде в теории графов не существовало даже отдаленного намека на то, что термин "граф" как-то синонимичен термину "связный граф".
Пока вы не избавитесь об этого непонятно откуда взявшегося морока, дело дальше не пойдет
И так же нет никаких устоявшихся терминов. Они отличаются в различных кругах.
Это мне никак и нигде не мешает.



Цитата Сообщение от https://ru.wikipedia.org/wiki/Граф_(математика)#Определения
Теория графов не обладает устоявшейся терминологией. Поэтому в некоторых публикациях могут использоваться термины, отличные от приведенных ниже.
И я в этом лично не раз убеждался.
Так что не нужно меня поучать.

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Вбейте себе в голову: произвольный граф почти всегда несвязен.
Кто сказал что в задаче он произволен ?
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6329 / 3057 / 1054
Регистрация: 01.06.2021
Сообщений: 11,675
17.07.2024, 16:26
Цитата Сообщение от TheCalligrapher
Тут уже какая-то чушь написана. Первая проверка, согласно условию задачи, делается после добавления первого ребра.
Ну значит мы условие понимаем по-разному. Потому что, я понял иначе. Под добавлением я понимаю добавление всех ребер. Ведь, если после каждого добавления ребра нужно проверить и ответить, то тогда нужно выводить результат после каждой вводимой строки с описанием ребер. Но в шапке вывод только в конце. Конечно, можно предположить, что вводятся все строки, а вывод формируется постепенно. Но визуально вывод появится мгновенно и тогда лишается смысла вот эта часть условия:
После каждого добавления нужно говорить, является ли текущий граф двудольным.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,350
17.07.2024, 16:58
Цитата Сообщение от Royal_X Посмотреть сообщение
Потому что, я понял иначе. Под добавлением я понимаю добавление всех ребер.
??? Ну тут уж я не знаю, что сказать ¯\_(ツ)_/¯

Уж что-что, а тот факт, что ответ о текущей двудольности графа требуется определять после добавления каждого индивидуального ребра, из условия задачи понятен сразу и совершенно однозначно.

Цитата Сообщение от Royal_X Посмотреть сообщение
Ведь, если после каждого добавления ребра нужно проверить и ответить, то тогда нужно выводить результат после каждой вводимой строки с описанием ребер.
??? Ввод данных делается из входного потока. Вывод данных делается в выходной поток. Это - разные потоки. То есть никаких выводов о том, как соотносятся во времени ввод и вывод из приведенного примера сделать нельзя. Задачи всегда так формулировались. Вы как с Луны свалились...

В готовом решении результат может выводится именно после каждой вводимой строки с описанием очередного ребра... А может выводиться и после ввода всех ребер... Когда именно выводится результат - это неважно. Важно то, что результат должен представлять из себя "строчку m нулей и единиц. i-й символ должен быть равен единице, если граф, состоящий из первых i ребер, является двудольным".
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
17.07.2024, 17:10
Чисто для фана, код из самого начала для случая связности графа при добавлении ребер :
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
#include <iostream>
#include <vector>
#include <utility>
 
int main(){
   unsigned vertices, edges;
   std::cin >> vertices >> edges;
   
   // группы вершин двудольного графа
   std::vector<bool> red_group(vertices+1, false), blue_group(vertices+1, false);
   std::vector<bool> result(edges, false);
  
   enum State {Free, Red, Blue};
   
   for(unsigned i = 0, v, w; i != edges; ++i){
      std::cin >> v >> w;
      
      State state_v = blue_group[v] ? Blue : red_group[v] ? Red : Free ;
      State state_w = blue_group[w] ? Blue : red_group[w] ? Red : Free ;
      if ( (state_v == Blue && state_w == Blue) || 
           (state_v == Red  && state_w == Red) )
         break;
 
      if (state_v == Blue)
         std::swap(v, w);
      red_group[v] = true; blue_group[w] = true;
      
      result[i] = true;
   }
   for(unsigned i = 0; i != edges; ++i)
      std::cout << result[i];
   std::cout << std::endl;
}
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6329 / 3057 / 1054
Регистрация: 01.06.2021
Сообщений: 11,675
17.07.2024, 17:10
TheCalligrapher, я понял, что мне лучше пойти и какой-нибудь кинчик посмотреть, а вы решайте эту задачу (⁠◠⁠‿⁠・⁠)
0
17.07.2024, 17:13

Не по теме:

Цитата Сообщение от Royal_X Посмотреть сообщение
а вы решайте эту задачу
Она уже давно решена.
Это споры о терминологии и восприятия.

0
17.07.2024, 17:16

Не по теме:

SmallEvil, ну вообще-то 99,9% задач на форуме в разделах программирования давно решены и ответы гуляют в инете со времён Ильича) Под "решайте" я подразумевал скопировать и вставить код и если нужно привести немного в приличный вид, чтобы полностью удовлетворить конкретному условию.

0
17.07.2024, 17:27

Не по теме:

Цитата Сообщение от SmallEvil Посмотреть сообщение
std::vector<bool>
Royal_X, избегайте std::vector<bool> ))

0
17.07.2024, 17:31

Не по теме:

SmallEvil, я как раз люблю vector<bool> ;)

0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,350
17.07.2024, 19:46
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Алгоритм второго приближения будет заключатся в том, как на шаге 2.2.2 избежать необходимости прохода по всем вершинам одной компоненты связности для того, чтобы инвертировать их пометки. Вот тут-то на помощь приходит представление компоненты связности в виде дерева с ссылками на предка и выполнением транзитивного замыкания (Система непересекающихся множеств), а также хранение в корне дерева флага инвертированности пометок - одного на всю компоненту связности. Работа с пометками получится довольно запутанной, но все терпимо...
Вершины каждой связной компоненты представляются в виде parent pointer tree. При поиске корня дерева выполняется сжатие путей по стратегии path halving.

Каждая вершина имеет пометку half (0 или 1, доля графа) и поле invert (тоже 0 или 1). Для того, чтобы определить, какой доле графа принадлежит вершина, нужно её пометку half подвергнуть операции XOR с полем invert вершины, а также далее с полями invert всех parent-ов вершины по цепочке вплоть до корня дерева (включительно).

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
#include <cassert>
#include <vector>
#include <iostream>
 
class Graph
{
public:
 
  Graph(unsigned n) : v(n)
  {
    for (unsigned i_v = 0; i_v < v.size(); ++i_v)
      v[i_v] = { i_v };
  }
 
  bool merge(unsigned i_a, unsigned i_b)
  {
    Id id_a = identify(i_a), id_b = identify(i_b);
 
    if (id_a.i_root == id_b.i_root)
      return id_a.half != id_b.half;
 
    if (id_a.half == id_b.half)
      v[id_a.i_root].flip ^= 1;
 
    v[id_a.i_root].flip ^= v[id_b.i_root].flip;
    v[id_a.i_root].i_parent = id_b.i_root;
 
    return true;
  }
 
private:
 
  struct Vertex
  {
    unsigned i_parent;
    unsigned char half, flip;
  };
 
  std::vector<Vertex> v;
 
  struct Id
  {
    unsigned i_root;
    unsigned char half;
  };
 
  Id identify(unsigned i_v)
  {
    assert(i_v < v.size());
 
    Id id = { i_v, v[i_v].half };
 
    for (unsigned i_parent; (i_parent = v[i_v].i_parent) != i_v; i_v = i_parent)
    {
      assert(i_parent < v.size());
 
      unsigned i_parent_parent = v[i_parent].i_parent;
      if (i_parent_parent != i_parent)
      {
        v[i_v].flip ^= v[i_parent].flip;
        i_parent = v[i_v].i_parent = i_parent_parent;
      }
 
      id.half ^= v[i_v].flip;
    }
 
    id.half ^= v[i_v].flip;
    id.i_root = i_v;
    assert(v[id.i_root].i_parent == id.i_root);
 
    return id;
  }
};
 
int main()
{
  unsigned n = 0, m = 0;
  std::cin >> n >> m;
  assert(n > 0 && m > 0);
 
  Graph g(n);
 
  for (; m > 0; --m)
  {
    unsigned a = 0, b = 0;
    std::cin >> a >> b;
    assert(a > 0 && b > 0);
    if (!g.merge(a - 1, b - 1))
      break;
 
    std::cout << "1";
  }
 
  for (; m > 0; --m)
    std::cout << "0";
 
  std::cout << std::endl;
}
К сожалению, внешнего набора тестов нет. Код не тестировался тщательно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.07.2024, 19:46

Проверка графа-дерева
Неориентированный граф без петель и кратных ребер задан матрицей смежности. Требуется определить, является ли этот граф деревом. Входные...

Проверка на связанность графа
Всем Привет. Я получил задание проверить связанный ли граф , у меня имеется матрица смежности (adjacency matri) ,а также написаны и...

Проверка графа с односторонними рёбрами
В стране имеется N городов и М дорог между ними. Все дороги в стране имеют только одну полосу, поэтому передвигаться по ним можно только в...

Проверка на смежность вершин графа
Создаю граф, для него матрицу смежности (1 - есть ребро, 0 - нет). Потом должна быть проверка на смежность вершин. Если хотя бы две вершины...

Двудольность графа
Требуется проверить граф на двудольность методом поиска в глубину либо в ширину на С++ Опишите, пожалуйста, алгоритм по шагам


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru