Pagini recente » Cod sursa (job #2055331) | Cod sursa (job #247047) | Cod sursa (job #1981544) | Cod sursa (job #2408543) | Cod sursa (job #731694)
Cod sursa(job #731694)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
const int N = 1030;
priority_queue <pair <int, int>, vector <pair <int, int> >, greater <pair <int, int> > > H;
vector <pair <int, int> > L[N];
vector <int> dist[N];
int n, k;
void read() {
int m, x, y, c;
scanf("%d%d%d", &n, &m, &k);
for (int i = 1; i <= m; ++i) {
scanf("%d%d%d", &x, &y, &c);
L[x].push_back(make_pair(y, c));
}
}
void solve() {
pair <int, int> nc;
H.push(make_pair(0, 1));
while (!H.empty()) {
nc = H.top();
swap(nc.first, nc. second);
H.pop();
if ((int)dist[nc.first].size() >= k)
continue;
dist[nc.first].push_back(nc.second);
for (int i = 0; i < (int)L[nc.first].size(); ++i) {
if ((int)dist[L[nc.first][i].first].size() >= k)
continue;
H.push(make_pair(nc.second + L[nc.first][i].second, L[nc.first][i].first));
}
}
}
void print() {
for (int j = 0; j < k; ++j)
printf("%d ", dist[n][j]);
}
int main() {
freopen("pitici.in", "r", stdin);
freopen("pitici.out", "w", stdout);
read();
solve();
print();
return 0;
}