Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как получить сигнал с клавиатуры, если активно другое приложение http://www.cyberforum.ru/cpp-beginners/thread1114156.html
Всем привет. Хочу реализовать вызов приложения, которое в данный момент не является активным. Т.е. к примеру, пользователь задал клавишу 'R' для одной функции, которая должна выполниться не забирая...
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, но при более чем двум процессам программа не работает,...
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. Судя по тому,... подробнее

Показать сообщение отдельно
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151

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

08.03.2014, 19:40. Просмотров 804. Ответов 0
Метки (Все метки)

Есть задача: [перепечатайте в пост]

Может кто-то мне объяснить як ее сделать. Вот ссылка на решение автора:
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.