Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2012, 12:28   #1
Olzhas-KazNU
 
Регистрация: 26.10.2012
Сообщений: 4
По умолчанию Задача по программированию

Браконьер Петрович использует распространенный незаконный способ рыбалки с использованием рыболовной сети. Но проблема в том, что крупная рыба часто рвет сеть и приходится ее восстанавливать. Однажды Петрович задумался: какое максимальное количество повреждений может быть в рыболовной сети, таких, что сеть не будет разорвана на части? Вам предстоит помочь ему в вычислениях.

Сеть имеет прямоугольную форму размером M*N узлов, все смежные узлы соединены леской. Под разрывом будем понимать только единичный обрыв лески между двумя смежными узлами сети.

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

Входные данные

Входной файл INPUT.TXT содержит два целых числа M и N – размеры рыболовной сети (1 <= M, N <= 10 000).

Выходные данные

В выходной файл OUTPUT.TXT выведите максимальное число разрывов заданной сети, которые не приведут к распадению рыболовной снасти Петровича.
примеры 2 2 ==>1
2 3==>3
вот прога ошибку выдает на 3 тесте
Код:
#include<iostream>
using namespace std;
main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int n,k;
cin>>n>>k;
cout<<(n*k)/2-1;
return 0;
 
       }

Последний раз редактировалось ACE Valery; 31.10.2012 в 16:49.
Olzhas-KazNU вне форума Ответить с цитированием
Старый 31.10.2012, 12:34   #2
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Т.е вы считаете что вывели формулу для расчета? Мде.
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 31.10.2012, 13:59   #3
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Например, если сеть имеет размер 2х2, то внешний вид сети будет напоминать квадрат, где допустим только один разрыв в одном из четырех возможных соединений, т.к. любые 2 разрыва приведут к разделению сети на 2 части.
Я чего-то не понимаю?

Код:
┌─┬─┐
├─┼─┤
└─┴─┘
Вот сеть 2х2.
Делаем два разрыва:
Код:
┌─┬─┐
│ │ │
└─┴─┘
Сетка не разделяется на две части?
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 31.10.2012, 14:03   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Mandrivnyk, сетка 2х2 - по каждой стороне 2 узла, а не 2 связи.
По-моему, формула m*n-(m+n)+1, но не нашел сайта, где можно проверить.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 31.10.2012 в 14:11.
BDA вне форума Ответить с цитированием
Старый 31.10.2012, 17:05   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Минимальный связный граф - дерево. Все деревья с одним множеством вершин имеют одно и то же число рёбер, равное (числу вершин)-1. Изначально граф имеет mn вершин и (2mn-m-n) рёбер. Так что сайт для проверки не нужен.
Abstraction вне форума Ответить с цитированием
Старый 31.10.2012, 17:13   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Abstraction, я рассуждал похоже, но все же привык проверять
(а проверять нужно потому, что я не опирался на теорию графов, хотя надо было, а просто на бумажке поприкидывал)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 31.10.2012 в 17:16.
BDA вне форума Ответить с цитированием
Старый 19.06.2019, 11:28   #7
Ajarus
Новичок
Джуниор
 
Регистрация: 19.06.2019
Сообщений: 1
По умолчанию

#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << (a - 1) * (b - 1);
return 0;
}
Ajarus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача по программированию VeNdJaKe Помощь студентам 0 24.04.2012 10:45
Задача по программированию arturjoshi Паскаль, Turbo Pascal, PascalABC.NET 0 26.01.2012 20:59
Задача по программированию. ALex25153 Помощь студентам 0 24.11.2011 21:33
задача по динамич. программированию Morsha Помощь студентам 4 02.12.2010 22:55