курсач

  • Автор темы qazaq
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Q

qazaq

задание такое - найти критический путь (путь наибольшей длины) от первой до последней вершины графа(дерева). причем дерево не обязательно бинарное. может быть и 3-арное и тд.
еще заданы расстояние между вершинами.
код ща вставлю...
у мя неполучаеца именно найти путь...
результат должен быть тип такой
1-2-5-9-15 // это путь
17 //это сумма расстояний (5+3+2+7).
Код:
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
#include "Rus.h"

#define max_size 100

int matr_sm[50][50],stek1[max_size],stek2[max_size];
int next=0,n,i,j;

void vvod()
{
ifstream fin("graf.txt", ios::in||ios::nocreate); 
int v1,v2;
cout<<(Rus("Введите кол-во вершин в графе:"))<<endl;
cin>>n;	
for (i=0;i<n;i++)	
{
fin>>v1;
fin>>v2;
fin>>matr_sm[v2-1][v1-1];
}

}

void vivod()
{
for (i=0;i<n;i++) 
{
for (j=0;j<n;j++)
cout<<matr_sm[j][i]<<" ";
cout<<endl;
}
}

void poisk()
{
int max,t=0,k;

max=matr_sm[0][0];
k=0;i=0;j=0;
do
{
do
{
if (matr_sm[i][j]>max)
{
max=matr_sm[i][j];
t=i;
}
//cout<<"T="<<t<<endl;
i++;

}
while(i<n); 

j++;
next++;
if (max==0)
{	
break;
}
stek1[next-1]=max;
max=matr_sm[0][0];
k++;
}
while(k!=n);

for(i=0;i<next-1;i++)
cout<<stek1[i]<<endl;
}
//второй вариант
/*void poisk2(int v)
{
int w,j=0;
stek1[v]=1; 
printf("%i ",v+1); 
for(i=0;i<n;i++)
{
if (matr_sm[i][j]>max)
max=matr_sm[i][j];
}
for (w=0;w<n;w++)
if (matr_sm[v][w]==1);
else if (stek1[w]==0) 
poisk(w);

}
*/
void main()
{ 
vvod();
cout<<endl;
cout<<(Rus("МАТРИЦА СМЕЖНОСТИ"))<<endl;
vivod();
cout<<endl;
cout<<(Rus("РЕЗУЛЬТАТ ПОИСКА КРИТИЧЕСКОГО ПУТИ"))<<endl;
// for (int v=0;v<n;v++) stek1[v]=0;
// for (int v=0;v<n;v++) 
//if (stek1[v]==0) 
//	poisk2(v);

poisk();
}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!