Реферат: Графы. Решение практических задач с использованием графов (С++)

for(int i=0;i<n;i++){

SST[num_edge] = E[i]; num_edge++; //добавляем ребро

// если появляется цикл - удаляем

if(cycle(SST[num_edge-1].end,SST[num_edge-1].beg))num_edge--;

for(int i=0;i<n;i++)nov[i]=1;

}

}

void out(edge *mas,int num){ // вывод ребер

int sum=0;

fprintf(fo,"%d\n",num); // количество ребер

for(int i=0;i<num;i++){

fprintf(fo,"%d\ %d\ %3d\n",mas[i].beg,mas[i].end,mas[i].weigh);

sum+=mas[i].weigh;

}

fprintf(fo,"%s%d","Вес найденного остова: ",sum);

}

int main(){

fscanf(fi,"%d",&n); //считываем количество ребер

E = new edge[n];

SST = new edge[n];

nov = new bool[n+1];

for(int i=0;i<n;i++)nov[i] = 1;

for(int i=0;i<n;i++) //заполняем множество ребер

fscanf(fi,"%d%d%d3",&E[i].beg,&E[i].end,&E[i].weigh);

kruskal(); //строим остов

out(SST,num_edge); //выводим в файл

return 0;

}

5.Для заданного неориентированного графа найдите максимальное паросочетание.

К-во Просмотров: 808
Бесплатно скачать Реферат: Графы. Решение практических задач с использованием графов (С++)