Cod sursa(job #2117153)

Utilizator dragomirmanuelDragomir Manuel dragomirmanuel Data 28 ianuarie 2018 16:56:42
Problema Pitici Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <algorithm>

#define mp make_pair
#define pb push_back

using namespace std;

ifstream fin("pitici.in");
ofstream fout("pitici.out");

const int NMax = 1025;
int N, M, K;

vector < pair < int, int > > G[NMax];
vector < int > v[NMax];

void Read()
{
    fin >> N >> M >> K;
    for(int i=1; i<=M; ++i)
    {
        int x, y, c;
        fin >> x >> y >> c;
        G[x].pb(mp(y,c));
    }
}

priority_queue < pair < int, int > > Q;

void Dijkstra()
{
    Q.push(mp(0,1));

    while(!Q.empty())
    {
        int nodc = Q.top().second;
        int cost = -Q.top().first;
        Q.pop();

        vector < pair < int, int > > ::iterator it;

        for(it=G[nodc].begin(); it!=G[nodc].end(); ++it)
        {
            int vec = it -> first;
            int cst = it -> second;
            int val;

            val = cst + cost;
            Q.push(mp(-val,vec));
            v[vec].pb(val);

        }
    }

    sort(v[N].begin(), v[N].end());

    for(int i=0; i<K; ++i)
        fout << v[N][i] << " ";
}

int main()
{
    Read();
    Dijkstra();
    return 0;
}