Erro no index de um array - c++ 11
Pessoal, eu estou implementando o algoritmo de dijkstra para resolver um problema da olimpíada brasileira de informática, mas não consigo compilar o programa porque há um erro que não consigo entender porque está ocorrendo nas linhas 43, 44 e 45, que no caso é:
error: invalid types 'int[int]' for array subscript
Aqui está o código completo em C++11:
#include <bits/stdc++.h>
#define mkp make_pair
using namespace std;
const int MAXN = 1010, INF = 0x3f3f3f3f;
int n, m, p[MAXN], dist[MAXN];
vector<pii> g[MAXN];
typedef pair<int, int> pii;
void Dijkstra(int s){
memset(dist, INF, sizeof dist);
dist[s] = 0;
priority_queue< pii, vector<pii>, greater<pii> > fila;
fila.push(mkp(dist[s], s));
while(true){
int davez = -1, menor = INF;
while(!fila.empty())
{
int atual = fila.top().second;
fila.pop();
if (!p[atual])
{
davez = atual;
break;
}
}
if (davez == -1) break;
p[davez] = 1;
for(int i = 0; i < (int) g[davez].size(); i++){
int dist = g[davez][i].first, atual = g[davez][i].second;
if (dist[atual] > dist[davez] + dist)
{
dist[atual] = dist[davez] + dist;
fila.push(mkp(dist[atual], atual));
}
}
}
}
int main(){
int u, v, b;
scanf("%d %d", &n, &m);
for(int i = 0; i < m; i++){
scanf("%d %d %d", &u, &v, &b);
g[u].push_back(mkp(b, v));
}
Dijkstra(0);
printf("%d\n", dist[n+1]);
}Discussão (0)
Carregando comentários...