Изображения нет, но я могу объяснить как решать такой тип задач. Здесь применяется теория графов. Если не углубляться, то там всё предельно ясно и просто.
Нужно изобразить граф: рисуем по кругу точки (вершины графа), называем их (можно не просто точки рисовать, а кружки и в кружках букву населенного пункта писать). Потом соединяем между собой точки у которых есть связь и подписываем "вес" (расстояние между населенными пунктами) этого пути. Визуально может не соответствовать длинна, но для нас потом главное просчитать какой из возможных путей наберет наибольший "вес".
bool ok1(int a, int b, int c){
return (a+b > c && a+c > b && b+c > a) && min(a,min(b,c)) > 0;
}
bool ok2(int a, int b, int c){
return ok1(a,b,c) && (a == b || a == c || b == c);
}
signed main(){
const int n = 3, m = 7;
int arr[n][m];
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
cin >> arr[i][j];
vector<int> ans;
for(int j = 0; j < m; j++)
if(ok2(arr[0][j],arr[1][j],arr[2][j]))
ans.push_back(j+1);
cout << ans.size() << "\n";
for(auto i: ans)
cout << i << " ";
}
Подробнее - на -
Объяснение:
Здесь применяется теория графов. Если не углубляться, то там всё предельно ясно и просто.
Нужно изобразить граф: рисуем по кругу точки (вершины графа), называем их (можно не просто точки рисовать, а кружки и в кружках букву населенного пункта писать). Потом соединяем между собой точки у которых есть связь и подписываем "вес" (расстояние между населенными пунктами) этого пути. Визуально может не соответствовать длинна, но для нас потом главное просчитать какой из возможных путей наберет наибольший "вес".
Если что-то непонятно, спросите в комментариях.