Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.19.56.45] |
|
Сообщ.
#1
,
|
|
|
Матрица смежности считывается из файла, далее обход графа в глубину.
Помогите исправить вывод, чтобы было так: Из города 1 можно добраться в города: ..., ... Из города 2 можно добраться в города: ..., ... и т.д. Если пути нет, то Из города 3 нельзя добраться в другие города. #include <stdio.h> #include <cstdlib> #include <iostream> #include <locale.h> #define N 6 using namespace std; int matrix[N][N],P[N]={0,0,0,0,0,0}, c=0; int next (int i, int cur) { cur++; while (cur<N && !matrix[i][cur]) cur++; if (cur<N) return cur; return -1; } void DFSR (int x) { int y; P[x] = ++c; //помещаем вершину в путь y = next (x, -1); while (y != -1) //пока есть смежные вершины { if (!P[y]) //если вершины еще нет в пути DFSR (y); //продолжаем с нее обход y = next (x, y); //переходим к следующей вершине } } int main(int argc, char ** argv) { setlocale (LC_ALL, "Russian"); int matrix[N][N]; int i, j; char FileName[256]; FILE *inp; cout << "Введите имя файла: "; cin >> FileName; if ((inp=fopen(FileName,"r")) == NULL) { cout << "Ошибка, данного файла не существует" << endl; return -1; } else cout<< "\n" <<endl; cout<< "Матрица смежности" <<endl; cout<< "_________________\n" <<endl; for(i = 0; i < N && !feof(inp); i++) { for(j = 0; j < N && !feof(inp); j++) { fscanf(inp, "%d", &matrix[i][j]); printf("%d ", matrix[i][j]); } putchar('\n'); } cout<< "\n" <<endl; cout<< "Определить из каждого ли города можно попасть в остальные." <<endl; cout<< "__________________________________________________________\n" <<endl; int x; for (x=0; x<N; x++) if (P[x]==0) DFSR(x); for (x=0; x<N; x++) { cout << "Из города " << x+1 << " можно попасть в города:" <<endl; for (i=0; i<N; i++){ for (j=0; j<N; j++){ if ((matrix[i][j]==1)&&(matrix[j][i]==1)){ cout << i+1 << " "<<endl; i++; } } } } fclose(inp); return (0); } :wacko: |
Сообщ.
#2
,
|
|
|
Masha1, так а нужно-то что c этим кодом сделать?
|