Pagini recente » Cod sursa (job #2461192) | Cod sursa (job #2334085) | Cod sursa (job #160583) | Cod sursa (job #445629) | Cod sursa (job #161030)
Cod sursa(job #161030)
#include <stdio.h>
int n, m, k;
int i, j, h, g;
int nr[1001][5001];
typedef struct nod {
int vf, cost;
nod* urm;
} NOD, *PNOD;
PNOD l[1001];
void Add(int i, int j, int h);
int Calc(int nod, int cost);
int main()
{
freopen("pitici.in", "r", stdin);
freopen("pitici.out", "w", stdout);
scanf("%d %d %d", &n, &m, &k);
for ( h = 1; h <= m; h++ )
scanf("%d %d %d", &i, &j, &g),
Add(j, i, g);
for ( j = 0; j <= 5000; j++ )
Calc(n, j);
int afis = 0;
for ( j = 0; j <= 5000; j++ )
{
for ( i = 1; i <= nr[n][j] && i <= k; i++ )
if ( afis == 0 ) printf("%d", j), afis = 1;
else printf(" %d", j);
k -= nr[n][j];
if ( k <= 0 ) break;
}
printf("\n");
return 0;
}
void Add(int i, int j, int h)
{
PNOD q = new NOD;
q->vf = j;
q->cost = h;
q->urm = l[i];
l[i] = q;
}
int Calc(int nod, int cost)
{
if ( nod == 1 && cost == 0 ) return 1;
if ( nod == 1 && cost != 0 ) return 0;
nr[nod][cost] = 0;
for ( PNOD q = l[nod]; q; q = q->urm )
nr[nod][cost] += Calc(q->vf, cost-(q->cost));
return nr[nod][cost];
}