Pagini recente » Cod sursa (job #1648732) | Cod sursa (job #1738287) | Cod sursa (job #1270189) | Cod sursa (job #11838) | Cod sursa (job #984350)
Cod sursa(job #984350)
#include<fstream>
#include<vector>
#include<queue>
#include<cstdio>
using namespace std;
int n,m,k,nr,a,b,c,i,j,x,y,p[1050],tp[1050],d[1050];
bool viz[1050];
vector<int>l[1050];
vector<pair<int,int> >v[1050],vt[1050];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >h;
inline void dfs(int x)
{
viz[x]=1;
for(unsigned int i=0;i<v[x].size();++i)
{
if(!viz[v[x][i].first])
dfs(v[x][i].first);
}
tp[++nr]=x;
}
int main()
{
freopen("pitici.in","r",stdin);
freopen("pitici.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
// f>>n>>m>>k;
for(i=1;i<=m;++i)
{
scanf("%d%d%d",&a,&b,&c);
// f>>a>>b>>c;
v[a].push_back(make_pair(b,c));
vt[b].push_back(make_pair(a,c));
}
dfs(1);
l[1].push_back(0);
for(i=nr-1;i;--i)
{
x=tp[i];
while(!h.empty())
h.pop();
for(j=0;j<vt[x].size();++j)
{
y=vt[x][j].first;
d[y]=vt[x][j].second;
p[y]=1;
h.push(make_pair(l[y][0]+d[y],y));
}
for(j=1;j<=k&&!h.empty();++j)
{
pair<int,int>kk=h.top();
h.pop();
l[x].push_back(kk.first);
if(p[kk.second]<l[kk.second].size())
{
h.push(make_pair(l[kk.second][p[kk.second]]+d[kk.second],kk.second));
++p[kk.second];
}
}
}
for(i=0;i<k;++i)
printf("%d ",l[n][i]);
// g<<l[n][i]<<' ';
printf("\n");
// g<<'\n';
return 0;
}