Pagini recente » Cod sursa (job #1857007) | Cod sursa (job #1415217) | Cod sursa (job #2737588) | Cod sursa (job #2830301) | Cod sursa (job #2117153)
#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;
}