Pagini recente » Cod sursa (job #1842880) | Cod sursa (job #2741948) | Cod sursa (job #884624) | Cod sursa (job #2663414) | Cod sursa (job #2432380)
#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++)
{
int ww= dp[v].size();
if(i< ww)
vr.push_back(dp[v][i]+w);
else
break;
}
int x=0, y=0, count=0;
vector < int > arr;
while(count<=1000)
{
int uu= dp[u].size();
int vv= vr.size();
if(x==uu || y==vv)
break;
if(dp[u][x] < vr[y])
{
arr.push_back(dp[u][x]);
x++;
}
else
{
arr.push_back(vr[y]);
y++;
}
count++;
}
int vv=vr.size();
while(y!= vv && count<=1000)
{
count++;
arr.push_back(vr[y]);
y++;
}
int uu=dp[u].size();
while(x!=uu && 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++)
{
int aa= a[i].size();
for(int j=0;j<aa;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;
}