Cod sursa(job #161355)

Utilizator alextheroTandrau Alexandru alexthero Data 17 martie 2008 22:15:11
Problema Pitici Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
/*
ID: alexthe1
TASK: cowjog
LANG: C++
*/

#include <stdio.h>
#include <algorithm>
#include <set>
#include <vector>

#define nmax 1505
#define pb push_back

using namespace std;
typedef pair<int, int> ii;

int n, m, k, l, n1, n2, cs, vec, cost;
vector <ii> e[nmax];
multiset <int> s[nmax];
multiset <int> :: iterator it;

int main()
{
	freopen("pitici.in", "r", stdin);
	freopen("pitici.out", "w", stdout);
	
	scanf("%d%d%d", &n, &m, &k);
	for(int i = 1; i <= m; i++)
	{
		scanf("%d%d%d", &n1, &n2, &cs);
		e[n2].pb(ii(n1, cs));
	}
	
	s[n].insert(0);
	for(int i = n; i >= 1; i--)
		for(int j = 0; j < (int)e[i].size(); j++)
		{
			vec = e[i][j].first, cost = e[i][j].second;
			for(it = s[i].begin(), l = 1; it != s[i].end() && l <= k; ++it, ++l)
				s[vec].insert(*it + cost);
		}

	for(it = s[1].begin(), l = 1; it != s[1].end() && l <= k; ++it, ++l) printf("%d ", *it);
	for(int i = l; i <= k; i++) printf("-1\n");

	return 0;
}