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

Разбор задачи с Codeforces - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как получить сигнал с клавиатуры, если активно другое приложение http://www.cyberforum.ru/cpp-beginners/thread1114156.html
Всем привет. Хочу реализовать вызов приложения, которое в данный момент не является активным. Т.е. к примеру, пользователь задал клавишу 'R' для одной функции, которая должна выполниться не забирая фокус на себя. По клавише PrtScr другое действие и т.д. В совокупности до 10 клавиш или их сочетаний должно быть передано в программу. Заранее всем большое спасибо
C++ Как организовать ввод в консольную строку даты в виде: dd/mm/yyyy Подскажите, кто знает как организовать ввод в консольную строку даты в виде: dd/mm/yyyy. Чтобы потом можно было считать переменные day, month, year. Заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread1114145.html
C++ Передать число 987.5 между четырьмя процессами в MPI
Здравствуйте! Помогите разобраться необходимо сделать кольцевую передачу числа 987.5 между четырьмя процессами уменьшая его в трое до 5 в MPI, но при более чем двум процессам программа не работает, не могу понять что я делаю не так. Вот мой код, для 4-х процессов я добавлял ещё одну ветвь if-else с номерами процессов. #include <mpi.h> #include <iostream> int main (int argc, char * argv) { ...
C++ Создание QT4 project в CodeBlocks
Я создаю нвый проект, выбираю QT4 project, присваиваю имя проекту, а дальше он просит указать расположение QT. Где его взять??
C++ Как сделать, чтобы сочетание клавиш 'enter'+'space' выходили из консоли http://www.cyberforum.ru/cpp-beginners/thread1114102.html
#include <iostream> #include <conio.h> using namespace std; int main() { char c; cout<<"test\n"; A: c = getch();
C++ Присваивание объекта класса ofstream Задача стоит в том, что нужно передать объект класса ofstream конструктору анонимного объекта (допустим, класса Store) и, как следствие, присвоить его члену типа ofstream класса Store. Судя по тому, что я обнаружил, штудируя англоязычные инструкции по классу ofstream, с объектом данного класса никак не удастся воспроизвести копирование, допустима лишь функция swap, которая у меня почему-то... подробнее

Показать сообщение отдельно
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
08.03.2014, 19:40     Разбор задачи с Codeforces
Есть задача: [перепечатайте в пост]

Может кто-то мне объяснить як ее сделать. Вот ссылка на решение автора:
http://codeforces.ru/blog/entry/10755

Также есть чужое решение (помогите его разобрать):

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
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <limits>
#include <tuple>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
const int C=1e6;
int n, m, k, ty[C], c[555], d[555][555], u[C], uc[555], lo[555], ls;
vector<int> t[C];
void go(int v)
{
    if (!uc[ty[v]]) lo[ls++]=ty[v];
    ++uc[ty[v]];
    u[v]=1;
    for (int i=0;i<t[v].size();++i) if (!u[t[v][i]]) go(t[v][i]);
}
void sm(int &a, int x)
{
    if (a==-1||a>x) a=x;
}
int main()
{
    scanf("%d %d %d", &n, &m, &k);
    for (int i=0;i<k;++i) scanf("%d", &c[i]);
    for (int i=0, s=0;i<k; s+=c[i], ++i) {
        for (int j=s; j<s+c[i]; ++j) {
            ty[j]=i;
        }
    }
    for (int i=0;i<k;++i) for (int j=0;j<k;++j) if (i!=j) d[i][j]=-1;
    for (int i=0;i<m;++i)
    {
        int a, b, x;
        scanf("%d %d %d", &a, &b, &x);
        --a; --b;
        if (x==0)
        {
            t[a].push_back(b);
            t[b].push_back(a);
        }
        a=ty[a];
        b=ty[b];
        sm(d[a][b], x);
        sm(d[b][a], x);
    }
    for (int i=0;i<n;++i)
    {
        if (uc[ty[i]]) continue;
        int pp=ls;
        go(i);
        for (int j=pp;j<ls;++j) if (uc[lo[j]]!=c[lo[j]]) { puts("No"); return 0; }
    }
    for (int l=0;l<k;++l) for (int i=0;i<k;++i) for (int j=0;j<k;++j)
    {
        if (d[i][l]!=-1&&d[l][j]!=-1) sm(d[i][j], d[i][l]+d[l][j]);
    }
    puts("Yes");
    for (int i=0;i<k;++i) for (int j=0;j<k;++j) printf("%d%c", d[i][j], j+1==k?'\n':' ');
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru