курсач

Тема в разделе "Общие вопросы по С и С++", создана пользователем qazaq, 17 дек 2006.

Статус темы:
Закрыта.
  1. qazaq

    qazaq Гость

    задание такое - найти критический путь (путь наибольшей длины) от первой до последней вершины графа(дерева). причем дерево не обязательно бинарное. может быть и 3-арное и тд.
    еще заданы расстояние между вершинами.
    код ща вставлю...
    у мя неполучаеца именно найти путь...
    результат должен быть тип такой
    1-2-5-9-15 // это путь
    17 //это сумма расстояний (5+3+2+7).
    Код (Text):
    #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();
    }
     
  2. qazaq

    qazaq Гость

    пасиб балшое за помощь
     
Загрузка...
Похожие Темы - курсач
  1. Fatality93
    Ответов:
    0
    Просмотров:
    1.369
  2. Musah
    Ответов:
    0
    Просмотров:
    968
Статус темы:
Закрыта.

Поделиться этой страницей