Here is the code.
#include<bits/stdc++.h>
using namespace std;
#define vi vector<int>
#define vii vector<pair<int, int>>
#define ii pair<int, int>
#define INF 1e6
int main()
{
int n,m,s,t;
cin>>n>>m>>s>>t;
vector<vii> AL(n, vii());
int u,v,w;
for(int i=0;i<n;i++)
{
cin>>u>>v>>w;
AL[u].emplace_back(u, w);
AL[v].emplace_back(v, w);
}
vi dist(n, INF);
dist[s] = 0;
set<ii> pq;
for(int i=0;i<n;i++)
{
pq.insert({dist[u], u});
}
while(!pq.empty()) {
auto [d, u] = *pq.begin();
pq.erase(pq.begin());
for(auto &[v, w]:AL[u]) {
if(dist[u] + w > dist[v])
continue;
pq.erase(pq.find({dist[v], v}));
dist[v] = dist[u] + w;
pq.insert({dist[v], v});
}
}
if(dist[t]!=INF)
cout<<dist[t];
else
cout<<"Unreachable";
}
These are the errors:
sol.cpp: In function 'int main()':
sol.cpp:34:14: error: expected unqualified-id before '[' token
auto [d, u] = *pq.begin(); ^ sol.cpp:37:19: error: expected unqualified-id before '[' token
for(auto &[v, w]:AL[u]) { ^ sol.cpp:37:19: error: expected ';' before '[' token
sol.cpp: In lambda function:
sol.cpp:37:25: error: expected '{' before ':' token for(auto &[v, w]:AL[u]) { ^ sol.cpp: In function 'int main()':
sol.cpp:37:25: error: could not convert 'main()::<lambda()>{v, w}' from 'main()::<lambda()>' to 'bool' sol.cpp:37:25: error: expected ';' before ':' token
sol.cpp:37:25: error: expected primary-expression before ':' token
sol.cpp:37:25: error: expected ')' before ':' token
sol.cpp:37:25: error: expected primary-expression before ':' token
How do I fix these errors I get while solving the Dijkstra algorithm in c++?