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

Найти мосты графа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Запись динамического массива в файл (не правильно выводит данные) http://www.cyberforum.ru/cpp-beginners/thread921187.html
Выделяю память под массив, заполняю его числами. int *mem_arr; int i; int n = 50; mem_arr = (int *)malloc(n*sizeof(int)); for(int i=0;i<6;i++) { printf("x=",i);
C++ Написать собственную функцию вычисления длины строки,перевода всех введенных букв в заглавные Написать собственную функцию вычисления длины строки,перевода всех введенных букв в заглавные.Продемонстрировать работу функции,введя несколько строк. http://www.cyberforum.ru/cpp-beginners/thread921182.html
C++ Можно ли прервать цепочку наследования?
например есть три класса, A, B и C. Класс "А" - базовый, "B" наследуется от "A", "C" наследуется от "B", как бы получается цепочка наследования A->B->C. Вопрос: можно ли сделать так, чтоб класс B наследовался от А, а класс С наследовался от B, но при этом класс C не наследовался бы от А ? :)
C++ Как создать статическую библиотеку с расширением .lib в MinGw?
Зачем это надо? - хочу скомпилировать библиотеку в MinGw и подключить к с++builder. Возможно ли это? а может, если я по-варварски возьму и перебью расширение .a на .lib будет работать? а может вообще c .a будет работать? (я пока ищу меню, где подключаются библиотеки к с++builder, поэтому эксперимент провести не могу)
C++ Работа с граф интерфейсом http://www.cyberforum.ru/cpp-beginners/thread921100.html
Почему он просто не может скомпилить ??
C++ рекурсивный алгоритм В общем я уже намучился с этим заданием... Дело такое, алгоритм составлен, но не совсем такой, какой нужен #include <iostream> #include <stdlib.h> #include <time.h> #include<conio.h> #include <iomanip> #include <cmath> using namespace std; подробнее

Показать сообщение отдельно
Alex_94
3 / 3 / 1
Регистрация: 21.03.2013
Сообщений: 17

Найти мосты графа - C++

10.07.2013, 22:26. Просмотров 480. Ответов 0
Метки (Все метки)

Помогите, пожалуйста. В чем ошибка?
http://www.e-olimp.com.ua/problems/1943 - условие
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
99
100
101
102
103
104
105
106
107
108
#include <stdio.h>
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
#pragma comment(linker, "/STACK:20000000");
 typedef vector<int> VInt;
 typedef vector<VInt> VVInt;
 typedef VInt::iterator VIter;
 typedef pair<int, int> PInt;
 typedef vector<PInt> VPInt;
 typedef vector<VPInt> VVPInt;
 typedef VPInt::iterator VPIter;
 
 VVInt graph;
 VInt colors, parents, enter, leave, low, bcc;
int myTime = 0;
int newIndex = 0;
 set <int> res;
 set<int>::iterator iter;
 
void visitLow(int u) {
   colors[u] = 1;
   low[u] = enter[u] = ++myTime;
   
   for(VIter it = graph[u].begin(); it != graph[u].end(); it++)
      if(colors[*it] == 0) {
         parents[*it] = u;
         visitLow(*it);
         low[u] = min(low[u], low[*it]);
      } else if(colors[*it] == 1 && *it != parents[u]) {
         low[u] = min(low[u], enter[*it]);
      }
   
   colors[u] = 2;
   leave[u] = ++myTime;      
 }
 
void visitBCC(int u) {
   for(VIter it = graph[u].begin(); it != graph[u].end(); it++)
      if(parents[*it] == u) {
         bcc[*it] = (low[*it] < enter[u]) ? bcc[u] :         
                    (low[*it] > enter[u]) ? -1 :             
                    (newIndex++);                            
         visitBCC(*it);         
      }
 }
 
int getBCC(int u, int v) {
    return bcc[(enter[u] > enter[v]) ? u : v];
 }
 
int main() {
   int n, m, i;
 
   scanf("%d%d", &n, &m);
   graph.resize(n);
   while(m--) {
      int from, to;
      scanf("%d%d", &from, &to);
      graph[from - 1].push_back(to - 1);
      graph[to - 1].push_back(from - 1);
   }
 
   colors.assign(n, 0);
   parents.assign(n, -1);
   enter.resize(n);
   leave.resize(n);
   low.resize(n);
   for(i = 0; i < n; i++)
      if(colors[i] == 0)
         visitLow(i);
 
   bcc.assign(n, -1);
   for(i = 0; i < n; i++)
      if(parents[i] == -1)
         visitBCC(i);   
   
 
   VPInt bridges;
   VVPInt comps(newIndex);
   for(i = 0; i < n; i++)
      for(VIter it = graph[i].begin(); it != graph[i].end(); it++)
         if(i < *it) {  
            int id = getBCC(i, *it);
           
            if(id == -1)  {bridges.push_back(PInt(i, *it));
            res.insert(*it);
            }
            else {comps[id].push_back(PInt(i, *it));
             }
         }
 
   printf("%d\n",bridges.size());
   
   printf("%d\n",*res.begin());
    for (iter=res.begin(); iter!=res.end(); )
    {
        iter++;
        if(iter!=res.end())
        printf("%d\n",*iter);
    }
    //printf("\n");
 
   
    return 0; 
 }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru