У меня есть двумерный вектор пар, и я хотел бы получить, в какой строке находится данная пара.
Я пытался перебрать все элементы, но мне это не удалось.
Вот матрица смежности неориентированного взвешенного графа:
vector<pair<int,int >> adj[20];
for (int i = 1; i <= nodes; i++){
f >> x >> y >> weight;
adj[x].push_back(make_pair(weight, y));
adj[y].push_back(make_pair(weight, x));
}
И это выглядит примерно так:
(4,2), (5,3)
(4,1), (6,3)
(5,1), (6,2)
Я пытаюсь найти, в какой строке находится пара (6, 2)
typedef pair<int, int>p;
p pair= make_pair(6, 2);
cout << which_row(adj, pair);
Вот что я попробовал в первую очередь:
int which_row(vector<p>adj[20], p pair) {
vector <pair<int, int>> ::iterator it;
for (int i = 0; i < adj->size(); i++) {
for (int j = 0; j < adj[i].size(); i++)
if (pair.first == adj[i][j].first && pair.second == adj[i][j].second)
return i;
}
return -1;
}
, но он не вступает в силу в течение l oop.
Секунда:
int which_row(vector<p>adj[20], p pair) {
vector <pair<int, int>> ::iterator it;
for (int i = 0; i <= adj->size(); i++) {
for (it = adj[i].begin(); it != adj[i].end(); it++)
if (pair.first == it->first && pair.second == it->second)
return i;
}
}
Но это не шаг за секунду для l oop.
Что я могу сделать?