Problema carta di fedeltà(miglia)

starò sbagliando sicurmente, ma non so cosa fare proprio…

#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <limits>
#include <cstdio>
#include <cstring>
#include <utility>
#define MAXN 1024
#define MAXK 100

using namespace std;
typedef pair<int,int> pii;
vector<pii>G[MAXN];
int mat[MAXN][MAXK];
int K,N,M;

void dijkstra(int start,int numero_visitati,int k) {
        int u, v, i, c, w;
        priority_queue< pii, vector< pii >, greater< pii > > Q;

        memset(mat, 0x3f, sizeof mat);
        Q.push(pii(0, start));
        mat[start][numero_visitati] = 0;
        while(!Q.empty()) {
            u = Q.top().second;
            c = Q.top().first;
            Q.pop();
            if(mat[u][numero_visitati] < c) continue;
            if(numero_visitati >=k-1) return;
            for(i = 0; i < G[u].size(); i++) {
                v = G[u][i].first; // nodo
                w = G[u][i].second; // peso edge

                if(mat[v][numero_visitati] > mat[u][numero_visitati] + w) {
                    mat[v][numero_visitati] = mat[u][numero_visitati] + w;
                    Q.push(pii(mat[v][numero_visitati], v));
                }
            }
            numero_visitati++;
        }
    }
int main()
{
    ifstream in("input.txt");
    ofstream out("output.txt");
    in>>K>>N>>M;
    for(int i = 0;i<M;i++)
    {
        int da,a,peso;
        in>>da>>a>>peso;
        G[da].push_back(pii(a,peso));
    }
    dijkstra(0,0,K);

    for(int i = 0;i<N;i++)
    {
        for(int j = 0;j<K;j++)
        {
            cout<<mat[i][j]<<endl;
        }
    }

    return 0;
}

Hai un’idea risolutiva con problemi di implementazione oppure non hai idea di come affrontare il problema?

Nonostante tu abbia incollato il codice, non mi pare che la domanda sia strettamente legata all’implementazione…