#include #include using namespace std; const unsigned nv_=9; // обмеження зверху на кількість вершин unsigned l[nv_], // оцінка довжини p[nv_]; // попередники bool c[nv_]; // ознака сталості vector b0; // список суміжеості однієї вершини vector > b,// списки суміжності w;// списки ваг ребер unsigned nv,ne, // вхідні дані з першого рядка u, // зчитана вага ребра s, // оцінка довжини l_max=99999999, // верхня межа довжини шляху i,j,k; // лічильники unsigned step(unsigned j) { for (i=0; i s) { l[b[j][i]] = s; p[b[j][i]] = j; } } s=l_max; for (k=0; kl[k]) { s=l[k]; i=k; } c[i]=true; return i; } int main() { ifstream fi; // оголошення потоку зчтитування з файлу fi ofstream fo; // оголошення потоку запису у файл fo fi.open("input.txt"); // прив'язування назви файлу до змінної fi fo.open("output.txt"); // gрив'язування назви файлу до змінної fo fi>>nv>>ne; for (j=0; j>j>>k>>u; b[j].push_back(k); b[k].push_back(j); w[j].push_back(u); w[k].push_back(u); } fi.close(); int start = 0; // Номери вершини, int finish = nv-1; // між якими шукаємо шлях c[start]=true; l[start]=0; j=start; while (j!=finish) j=step(j); fo<