Нахождение кратчайшего цикла в графе - C (СИ) (75197)
Формулировка задачи:
Программа для нахождения кратчайшего цикла в графе.
Не могу корректно отладить.Прошу помочь.Заранее благодарен.
#include <stdio.h> #include <conio.h> #define N 10 /***** Vvod Grafa *****/ void VvodGrafa(int g[N][N], int n) { int i,j;// nomer stroki,stolbca printf("Vvedite matricy smeznosti:\n\n"); printf(" | "); for(j=0;j<n;j++) printf("%d",j); putchar('\n'); for(i=0;i<2*n+2;i++) putchar('-'); for(i=0;i<n;i++) { printf("\n%d| ",i); for(j=0;j<n;j++) scanf("%d",&g[i][j]);} } /***** Poisk cikla *****/ int Poisk(int g[N][N],int n,int c[],int *dcmin)//c-vektor s nomerami vershin naidennogo cikla;dlina min.cikla - dcmin { int k;// ukazatel steka int ver[N+1];//Stek s nomerami vershin int st[N];//stek int tv;//nomer ocherednoi vershini tecushego puti int i,j; /*Obhod v glubinu*/ *dcmin=n+1; for(ver[0]=1;ver[0]<=n && *dcmin>3;)/* Nachalnaya vershina*/ {/*Obhod v glubinu dereva putei,nachinayshihsya s ver[0]*/ k=1;ver[1]=ver[0]+1;//nachalnyu nomer priemnikov s ver[0] do {/*nahogdenie vershini tv - priemnika ver[k-1]*/ j=ver[k-1]; for(tv=ver[k];tv<n && (g[i][tv]==0 || tv==ver[k-2]);ver++) if(tv<n && k<*dcmin) { ver[k]=tv;/*vpered:tv-v stek*/ ver[k+1]=tv[0];/*nachalnyi priemnik ver[k]*/ if(ver[0]==ver[k] && k>0) /*nashli cikl*/ { *dcmin=k; /*Zapomnit' cikl ver[0]...ver[k]*/ for(j=0;j<=k;j++) c[j]=ver[j]; k=k-3;/*Nazad: udalit' dve vershini*/ ver[k+1]++;/*Sled priemnik ver[k]*/ } k++; } else { k--;/*udalit' ver[k] iz steka*/ ver[k]++; } } while(k>0 && *dcmin>3);/*stek ne pustoi*/ } return *dcmin>n; } /***** Glavnaya funkciya *****/ main() {int n; int g[N][N]; printf("n="); scanf("%d",&n); VvodGrafa(g,n); Poisk(g,n); getch(); }
Решение задачи: «Нахождение кратчайшего цикла в графе»
textual
Листинг программы
int g[N][N];
Объяснение кода листинга программы
- Объявляется двумерный массив g размером NxN.
- Инициализируются значения элементов массива g.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д