Он не может выделить пару переменных в переменную int? - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь использовать bfs, но он включает взвешенный путь и его базу очередей с приоритетами, поэтому в моем коде приоритет будет отдан менее взвешенному пути.
Я назначаю парную переменную один для веса, а другой для узла.
P.first - это вес, а p.second - это узел.

Есть ли какая-либо проблема в объявлении, я не могу ее получить .. насколько я знаю, я делаю правильную реализацию.
Также могу ли я отодвинуть целую пару в вектор?

моя проблема в том, что он не может выделить вектор в переменную int?

ошибка: невозможно преобразовать '__gnu_cxx :: __ alloc_traits> :: value_type {aka std :: pair}' в 'int'в назначении |

#include<bits/stdc++.h>
using namespace std;

typedef pair<int, int> PAIR;
vector<PAIR> adjecent[100];

priority_queue < PAIR ,vector< PAIR >,greater< PAIR> > q;

bool visited[50];
int parent[50];
int distnce[50];
int path[50];
int sizee = 0;

void ucs(int start, int goal)
{
    int v,weight;
    PAIR newPair; //newPair is inheritance of PAIR variable so it is actually same . . . if i am not wrong
    visited[start] = true;
    q.push({0, start});
    distnce[start] = 0;
    while(!q.empty())
    {
        newPair = q.top();
        visited[newPair.second]=true;
        if(newPair.second == goal)
            return;
        q.pop();

    for (int i =0; i < adjecent [newPair.second] .size();i++)
    {
        v = adjecent[newPair.second][i].second;
        weight = adjecent[newPair.second][i].first;
        if(!visited[v] && distnce[v]> newPair.first+weight)
        {
            distnce[v]= newPair.first+weight;
            parent[v]= newPair.second;
            q.push({distnce[v], v});
        }

    }
    }
}

int main()
{
    int node,edge;
    cout<< "NODE: ";
    cin>> node;
    cout<< "EDGE: ";
    cin>> edge;

    for(int i=0;i<edge;i++)
    {
        int start;
        PAIR p;
        cin>> start >> p.first >> p.second;
        adjecent[start].push_back(p);
    }
    for(int i =1;i<=node;i++)
      {
        distnce[i] = 10000;
      }
     ucs(1, 4);
    //printPath();
}
...