Pagini recente » Cod sursa (job #2121858) | Cod sursa (job #2904986) | Cod sursa (job #1509434) | Cod sursa (job #1232106) | Cod sursa (job #161055)
Cod sursa(job #161055)
#include <stdio.h>
#include <set>
#include <utility>
using namespace std;
int n, m, k;
int i, j, h, g;
int nrd;
multiset<pair<int, int> > a;
multiset<pair<int, int> >::iterator it;
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, &g);
for ( h = 1; h <= m; h++ )
scanf("%d %d %d", &i, &j, &k),
Add(i, j, k);
a.insert(make_pair(0, 1));
while ( nrd < g )
{
it = a.begin();
i = (*it).first, k = (*it).second;
for ( PNOD q = l[k]; q; q = q->urm )
a.insert(make_pair(i+(q->cost), q->vf));
a.erase(a.begin());
if ( k == n )
{
nrd++;
printf("%d", i);
if ( nrd == g ) printf("\n");
else printf(" ");
}
}
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;
}