Pagini recente » Cod sursa (job #852385) | Cod sursa (job #98326) | Cod sursa (job #575262) | Cod sursa (job #318336) | Cod sursa (job #2432378)
#include <bits/stdc++.h>
using namespace std;
vector < int > dp[1050];
vector < pair < int , int > > a[1050];
void foo(int u, int v, int w)
{
vector < int > vr;
for(int i=0;i<1000;i++)
{
if(i<dp[v].size())
vr.push_back(dp[v][i]+w);
else
break;
}
int x=0, y=0, count=0;
vector < int > arr;
while(count<=1000)
{
if(x==dp[u].size() || y==vr.size())
break;
if(dp[u][x] < vr[y])
{
arr.push_back(dp[u][x]);
x++;
}
else
{
arr.push_back(vr[y]);
y++;
}
count++;
}
while(y!=vr.size() && count<=1000)
{
count++;
arr.push_back(vr[y]);
y++;
}
while(x!=dp[u].size() && count<=1000)
{
arr.push_back(dp[u][x]);
x++;
count++;
}
dp[u] = arr;
}
int main()
{
freopen("dwarf.in","r",stdin);
freopen("dwarf.out","w",stdout);
int n, m, k;
cin>>n>>m>>k;
for(int i=0;i<m;i++)
{
int u, v, w;
cin>>u>>v>>w;
a[v].push_back({u,w});
}
dp[1].push_back(0);
for(int i=2;i<=n;i++)
{
for(int j=0;j<a[i].size();j++)
{
foo(i, a[i][j].first, a[i][j].second);
}
}
for(int i=0;i<k;i++)
{
cout<<dp[n][i]<<" ";
}
cout<<endl;
return 0;
}