Не попавшую на рисунок вершину обозначим К.
С пунктом В связано наибольшее количество точек - ему соответствует П6. Пункт Е - единственный, который не связан с В - на его роль претендует только П2. Только пункт К имеет связь ровно с тремя вершинами - по таблице ему подходит П4.
Имеем:
В - П6
Е - П2
К - П4
Зная, что вершина Д связана с Е, определим по таблице, что ей подходит П7 (П4 уже занята пунктом К). Точке Г соответствует П3.
Осталось посчитать расстояния всевозможных маршрутов от В до Е и выбрать кратчайший.
В-Д = П6-П7 = 20
Д-Е = П7-П2 = 15
В-Д-Е = 20+15 = 35
В-К = П6-П4 = 25
К-Е = П4-П2 = 5
В-К-Е = 25+5 = 30
В-Г = П6-П3 = 10
Г-К = П3-П4 = 10
К-Е = П4-П2 = 5
В-Г-К-Е = 10+10+5 = 25
25 < 30 < 35
Таким образом, длина кратчайшего маршрута - 25.
Вообще, при решении подобных задач старайтесь искать какие-нибудь зацепки - например, вершины с таким количеством соседей, которого нет у других вершин (вроде вершин В и К в этой задаче). Где-то можно использовать метод исключения и т.п.
Поделитесь своими знаниями, ответьте на вопрос:
// решение нужно на языке программирования c++. задан номер мобильного телефона. определить, какие цифры отсутствуют в этом номере. входные данные: в единственной строке задан номер мобильного телефона. выходные данные: в первой строке вывести количество отсутствующих в номере цифр. во второй строке в порядке возрастания вывести отсутствующие цифры, разделенные пробелом.
#include <set>
#include <iterator>
using namespace std;
int main()
{
string s;
cin >> s;
set<char> mySet;
set<char>::iterator it;
for(char i='0'; i<='9'; i++) mySet.insert(i);
for(int i=0; i<s.length(); i++) mySet.erase(s[i]);
cout << mySet.size() << endl;
for(it=mySet.begin(); it!=mySet.end(); ++it)
cout<<*it<<" ";
return 0;
}
Пример:
74959741926
3
0 3 8