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

Граф.Найти все мосты - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не могу изпользовать свой стек в мейне(( http://www.cyberforum.ru/cpp-beginners/thread284107.html
ето просто ппц. сложность в том чтоя токо типа научилсо использовать неймспейсы! и тутси взял и написал стек при помощи класа. всё будто правильно ща токо перегруженую операцыю = дорисую и всё!!! но...
C++ Структура "Успеваемость студента": модифицировать, используя битовые поля Доброго времени суток! Есть прога, которая, используя структуру, отображает успеваемость каждого студента. Хотелось бы ее модифицировать, т.е,используя побитовые операции, отбразить ту же... http://www.cyberforum.ru/cpp-beginners/thread284101.html
C++ С++ set (Множества)
Дан текст из цифр и строчных латинских букв, за которыми следует точка. Определить каких букв - гласных или согласных - больше в этом тексте. напечатать в алфавитном порядке все согласные буквы,...
Таблица умножения C++
У меня такое дело...надо из корней составить таблицу умножения (Работа с матрицей) Например корни: 1 2 3 должна получиться матрица: 1 2 3 2 4 6 3 6...
C++ как переделать с cout на printf ? http://www.cyberforum.ru/cpp-beginners/thread284085.html
Вычислить суммы элементов каждой строки матрицы x. Определить наименьшее значение этих сумм и номер соответствующей строки. #include <iostream> #include <stdlib.h> #include <conio.h> #include...
C++ Пересечение, ообъединение, наименьший элемент пересечения множеств "Даны два множества A и B байтовых чисел. Найдите пересечение и объединение этих множеств и определите наименьший элемент пересечения множеств." Для начала, как в С++ задать байтовые множества. Ну и... подробнее

Показать сообщение отдельно
Wolfed
2 / 2 / 1
Регистрация: 15.02.2011
Сообщений: 70

Граф.Найти все мосты - C++

27.04.2011, 23:17. Просмотров 795. Ответов 0
Метки (Все метки)

Помогите пожалуйста,нужно в графе найти мосты(мост-ребро,при удалении которого увеличивается количество компонент связности) ,у меня следующий вопрос:
как задать входные данные?Ну нужно считывать из файла input.txt,есть два способа - массивом вводить(матричный вид,если ребро между вершинами есть ставим 1) либо структурным(незнаю как, но думаю,что struct list, где каждый List соответсвует вершине,а в поле elem указывать с какими вершинами он соединен ребрами). Вот меня интересует структурный ввод - как его осуществить?Вообще с чем легче работать? Метод решения задачи придумал: Убирать ребро если со всех точек можно добрать до одной из вершин то это не мост,в противном случае мост.

Добавлено через 19 часов 22 минуты
Почему выдает ошибку?( при вводе ошибку выдает(
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
#include <iostream>
#include <vector>
#include <algorithm>
using std::vector;
vector<vector<int>>g;
vector<char>used;
int timer;
vector<int>tin,fup;
int min(int a,int b)
{ if (a>b) return b;
else return a;}
void dfs(int v,int p=-1)
{
    used[v]=true;
    tin[v]=fup[v]=timer++;
    for(size_t i=0;i<g[v].size();++i){
        int to=g[v][i];
        if (to=-p) continue;
        if(used[to])
            fup[v]=min(fup[v],tin[to]);
        else{
            dfs(to,v);
            fup[v]=min(fup[v],fup[to]);
            if(fup[to]>tin[v])
                printf ("%d %d",v,to);
        }
    }
}
int main(){
    int n=6,x,i,j;
FILE *in=fopen("input.txt","r");
for (i=0;i<n;i++)
    for (j=0;j<n;j++)
    {fscanf(in,"%d",&x);
g[i][j]=x;}
timer=0;
used.assign(n,false);
tin.resize(n);
fup.resize(n);
dfs(0);
}
Добавлено через 4 часа 13 минут
нуу почемууу(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.