include iostream include stdlib include windows include stdio define u

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#define N 6
using namespace std;
int mat_ves[N][N]={}; //матрица весов
int oc_ver[N]; // оценка вершин
void funny(int nach) // функция сборки пути
{
for(int m=0; m<N; m++)
{
if( mat_ves[nach][m]<666 )
if( (oc_ver[nach]-mat_ves[nach][m]) == oc_ver[m] )
{
if(oc_ver[m]==0)
{
cout<<m+1;
}
else
funny(m);
}
}
cout<<"->"<<nach+1;
}
int main()
{
int i,j; // все мы знаем, зачем они нужны
bool bil[N]={};
int min_ves_ver;
char name[20];
FILE *f;
setlocale(LC_ALL, "Russian");
cout<<"\n введите имя файла: ";
scanf("%s",name);
if((f=fopen(name,"rb"))== NULL)
{
cout<<"\n ошибка открытия файла \n";
system("PAUSE");
return 1;
}
// чтение матрицы весов из файла
cout<<"матрица весов данного графа:"<<endl;
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
fread(&mat_ves[i][j],sizeof(int),1, f);
printf("%4d ",mat_ves[i][j]);
}
cout<<endl;
}
for(i=0; i<N; i++)
{
oc_ver[i]=666;
}
int i_ver,i_con; // пункт, с которого мы начинаем и заканчиваем
cout<<"введите номер города, с которого следует расчитывать маршрут:";
cin>>i_ver;
oc_ver[--i_ver]=0;
int begin=i_ver;
while(i_ver<666)
{
for(j=0; j<N ; j++)
{
// сделать усовершенствование для попадания в конечную вершину
if(mat_ves[i_ver][j]<666 && (i_ver!=j))
{
oc_ver[j]=min(mat_ves[i_ver][j]+oc_ver[i_ver],oc_ver[j]);
}
}
bil[i_ver]=true;
//поиск новой вершины
min_ves_ver=i_ver=666;
for(i=0; i<N; i++)
{
if(!(bil[i]))
if(min_ves_ver>oc_ver[i])
{
min_ves_ver=oc_ver[i];
i_ver=i;
}
}
}
int nnn;
cout<<"введите N, для расчета переферии: "<<endl;
cin>>nnn;
cout<<"переферия: "<<endl;
int iii=0;
for(i=0; i<N; i++)
{
if(oc_ver[i]>nnn)
{
cout<<" "<<i+1;
iii++;
}
}
if(iii==0)
{
cout<<" нет подходящих городов";
}
for(i=0; i<N; i++)
{
cout<<endl<<oc_ver[i]<<" "<<endl;
}
return 0;
}