Pagini recente » Cod sursa (job #2481144) | Cod sursa (job #665091) | Cod sursa (job #2001384) | Cod sursa (job #407748) | Cod sursa (job #283934)
Cod sursa(job #283934)
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <string.h>
using namespace std;
#define MAX_N 1024
int n, m, k, i, j, p, q, c, val, fiu, cost;
vector <int> A[MAX_N], C[MAX_N];
int v[MAX_N][MAX_N], aux[MAX_N * MAX_N];
char s[50];
void pars() {
fgets(s, 50, stdin);
j = 0; p = q = c = 0;
while (s[j] != ' ') {
p = p * 10 + s[j] - '0';
++j;
}
++j;
while (s[j] != ' ') {
q = q * 10 + s[j] - '0';
++j;
}
++j;
while ('0' <= s[j] && s[j] <= '9') {
c = c * 10 + s[j] - '0';
++j;
}
}
void cit() {
freopen("pitici.in", "r", stdin);
freopen("pitici.out", "w", stdout);
scanf("%d %d %d\n", &n, &m, &k);
for (i = 1; i <= m; ++i) {
//aici parsez citirea
pars();
A[p].push_back(q);
C[p].push_back(c);
}
}
void solve() {
v[n][0] = 1;
for (i = n - 1; i >= 1; --i) {
int len = A[i].size();
aux[0] = 0;
for (j = 0; j < len; ++j) {
fiu = A[i][j]; cost = C[i][j];
for (p = 1; p <= v[fiu][0]; ++p) {
++aux[0];
aux[aux[0]] = v[fiu][p] + cost;
}
}
sort(aux + 1, aux + aux[0] + 1);
for (j = 1; j <= aux[0]; ++j)
if (j > k) break;
else v[i][++v[i][0]] = aux[j];
}
}
void write() {
for (i = 1; i <= v[1][0]; ++i)
if (i > k) break;
else printf("%d ", v[1][i]);
printf("\n");
}
int main() {
cit();
solve();
write();
return 0;
}