Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- #include <windows.h>
- #include<iomanip>
- #include <cstdlib>
- using namespace std;
- char NEWT[256];
- char*RUS(char*TEXT) {
- CharToOemA(TEXT, NEWT);
- return NEWT;
- }
- int v;
- int main()
- {
- int i, j;
- int infinity = 1000;
- int VES[100][100];
- int x[100];
- int DlinaPuti[100];
- int PredVertex[100];
- int VERTEX;
- int p;
- cout<<RUS("Ввести количество вершин в графе ")<<endl;
- cin>>VERTEX; p = VERTEX;
- cout<<RUS("Заполните матрицу весов графа ")<<endl;
- cout<<setw(4);
- for (i = 0; i<VERTEX; i++)
- cout<<RUS("|x")<<i + 1;
- cout<<endl;
- for (i = 0; i<VERTEX; i++)
- {
- cout<<RUS("X")<<i + 1<<'|';
- for (j = 0; j<VERTEX; j++)
- cin>>VES[i][j];
- int start;
- int end;
- N: cout<<RUS("Введите стартовую вершину: ");
- cin>>start;
- if (start>(p - 1) && start<0) { cout<<RUS("Нет такой вершины повторите ввод...")<<endl; goto N; }
- start = start - 1;
- for (int prosto = 0; prosto<VERTEX; prosto++)
- {
- end = prosto;
- if (end == start) continue;
- else
- {
- int u;
- for (u = 0; u<p; u++)
- {
- DlinaPuti[u] = infinity;
- x[u] = 0;
- }
- PredVertex[start] = 0;
- DlinaPuti[start] = 0;
- x[start] = 1;
- v = start;
- while (1)
- {
- for (u = 0; u<p; u++)
- {
- if (VES[v][u] == 0)continue;
- if (x[u] == 0 && DlinaPuti[u]>DlinaPuti[v] + VES[v][u])
- {
- DlinaPuti[u] = DlinaPuti[v] + VES[v][u];
- PredVertex[u] = v;
- }
- }
- int w = infinity;
- v = -1;
- for (u = 0; u<p; u++)
- {
- if (x[u] == 0 && DlinaPuti[u]<w)
- {
- v = u;
- w = DlinaPuti[u];
- }
- }
- if (v == -1)
- {
- cout<<RUS("Нет пути из вершины ")<<start + 1; cout<<RUS(" в вершину ")<<end + 1<<"."<<endl;
- break;
- }
- if (v == end)
- {
- cout<<RUS("Кратчайший путь из вершины ")<<start + 1; cout<<RUS(" в вершину ")<<end + 1<<":";
- u = end;
- while (u != start)
- {
- cout<<" "<<u + 1;
- u = PredVertex[u];
- }
- cout<<" "<<start + 1<<RUS(". Длина пути - ")<< DlinaPuti[end]; cout<<endl;
- break;
- }
- x[v] = 1;
- }
- }
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement