Форум программистов, компьютерный форум CyberForum.ru

Задача с Olympiads - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Использование указателей. Преобразовать матрицу по правилу http://www.cyberforum.ru/cpp-beginners/thread755274.html
Дана действительная квадратная матрица порядка n. Преобразовать матрицу по правилу: строку с номером n сделать столбцом с номером n, а столбец с номером n сделать строкой с номером n. #include <stdio.h> #include<iostream.h> #include <conio.h> int main() { clrscr(); const n=3; int a,i,j,tm; for(i=0;i<n;i++)
C++ класс холста Здравствуйте всем. Пытаюсь реализовать класс "холста" или канвы. Задумывается это как объект в виде белого прямоугольника, внутри которого будут рисоваться все нужные примитивы (линии, круги, прямоугольники и т.п.). Так вот, не могу сообразить куда прикрутить контекст устройства для этого объекта. Каким образом заставить программу понять, что данный контекст устройства привязан не к экрану, не к... http://www.cyberforum.ru/cpp-beginners/thread755265.html
Программа не компилируется при перестановке прототипов шаблонных функций C++
Если переставить местами прототипы функций то программа не скомпилируется. Почему? В первой все хорошо, а вторая не компилируется только из-за того, что переставил местами функции Swap. 1. #include "stdafx.h" #include "iostream" using namespace std; struct Job {
Задачи на классы C++
Добрый вечер всем! Меня интересуют задачи на классы или перезагрузку операторов. Если кто-то имеет, сбрасывайте в эту тему! Я теории начитался, а вот практики мне не хватает! Извините за эту тему но в интернете нормального нет ничего!
C++ Посчитать количество цифр и букв в строке http://www.cyberforum.ru/cpp-beginners/thread755222.html
срочно. прошу вашу помощь_)) во введенной строке символов, заканчивающихся $. посчитать общее количество цифр и букв S. на с++.
C++ конструктор и деструктор Разработать класс, набор методов(конструктор, деструктор и указанные методы) для программной модели заданного объекта. Описание объекта и его основных свойств приводится ниже. Предоставить программу (int main), которая использует объекты разработанного класса: Объект "комплексные числа". Операции определяются по общепринятым формулам. Конструктор должен позволять создавать объекты без и с... подробнее

Показать сообщение отдельно
sera772
0 / 0 / 0
Регистрация: 04.12.2012
Сообщений: 11

Задача с Olympiads - C++

07.01.2013, 22:48. Просмотров 447. Ответов 6
Метки (Все метки)

Вроде работает, но на половине тестов срезается...
Условие:
В столице одной небольшой страны очень сложная ситуация. Многокилометровые пробки буквально парализовали движение в городе, и власти на многих улицах ввели одностороннее движение, не анализируя, можно ли будет теперь проехать из любого места в городе в любое другое, не нарушая правила. Транспортная система столицы представляет собой N площадей, соединенных M полосами для движения, в том числе круговыми полосами, проходящими по площади. Каждая полоса предназначена для движения только в одну определенную сторону. По круговой полосе можно двигаться только внутри площади и только против часовой стрелки.
Власти города на каждой полосе разместили видеокамеру, поэтому если Андрей едет по встречной полосе (при её наличии) или, в случае одностороннего движения, в сторону противоположную предписанной знаками, то после поездки против правил по каждой из полос ему придется заплатить штраф в размере одной тысячи тугриков этой страны.
Андрей, который торопится купить товар со скидкой, решил доехать до магазина в любом случае, даже если для этого придется нарушать правила. Но он хочет выбрать такой маршрут движения, суммарный штраф на котором минимален.
Андрей ещё не решил, откуда именно и в какой магазин он собирается ехать, поэтому ему необходимо ответить на несколько вопросов вида "Какой минимальный штраф надо заплатить, чтобы добраться из пункта А в пункт В?". Отвечая на потребности жителей столицы, известная поисковая система Индекс разрабатывает соответствующий сервис.
Помогите этой поисковой системе.
Формат входных данных:
В первой строке входных данных содержатся два числа N и M - количество площадей и полос движения в городе соответственно (1 <= N <= 5000, 1 <= M <= 10000). Далее содержатся описания полос, по которым движение разрешено. Каждая полоса описывается номерами двух площадей, которые она соединяет. Движение разрешено в направлении от первой из указанных площадей ко второй.
В следующей строке содержится одно число К - количество вопросов у Андрея (1 <= k <= 10000, N*K <= 2 * 10^7). В следующих строках описываются вопросы, каждый вопрос описывается номерами двух площадей, между которыми требуется найти дешевый путь. Путь необходимо продолжить от первой из указанных площадей ко второй.
Формат выходных данных:
Для каждого вопроса выведите одно число - искомый минимальный размер штрафа в тысячах тугриков. В случае, если пути между выбранной парой площадей не существует, выведите "-1".

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

Выходные данные:
0
2
0

Мое решение:
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
#include <stdio.h>
int N,M,K,dor[5000][5000],j,u,rez,min[5000];
 
int hod(int uk,int sum)
{int i;
 
if (rez==0)
    return 0;
if (uk==u-1)
{
    if (rez>sum)
        rez=sum;
    return 1;
};
 
if (sum>=rez)
    return 0;
 
if (sum<min[uk])
    min[uk]=sum;
for (i=0;i<N;i++)
{
    if (dor[uk][i]>=0&&sum+dor[uk][i]<min[i])
        hod(i,sum+dor[uk][i]);
}
    return 0;
}
 
int main()
{ int i;
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d %d",&N,&M);
 
for (i=0;i<5000;i++)
    for (j=0;j<5000;j++)
        dor[i][j]=-1;
for (i=0;i<M;i++)
{
scanf("%d %d",&j,&u);
if (dor[j-1][u-1]==-1)
{
    dor[j-1][u-1]=0;
    dor[u-1][j-1]=1;
}
else
{
    dor[j-1][u-1]=0;
    dor[u-1][j-1]=0;
};
};
scanf("%d",&K);
for (i=0;i<K;i++)
{
rez=20000;
                for (j=0;j<N;j++)
            min[j]=20000;
    scanf("%d %d",&j,&u);
    hod(j-1,0);
    if (rez==20000)
    {printf("-1\n");}
    else printf("%d\n",rez);
}
return 0;
}
Буду благодарен помощи!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru