Pagini recente » Cod sursa (job #2693516) | Cod sursa (job #951687) | Cod sursa (job #1738400) | Cod sursa (job #34868) | Cod sursa (job #1748044)
//not quite
#include <bits/stdc++.h>
#define maxN (1<<10)
using namespace std;
int n,m,k,i,j,x,y,z;
int dist[maxN],ind[maxN];
vector<pair<int,int> >v[maxN],tr[maxN];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >heap;
vector<int>sorted,dp[maxN];
bool seen[maxN];
void dfs(int nod)
{
seen[nod]=true;
for(vector<pair<int,int> >::iterator it=v[nod].begin();it!=v[nod].end();it++)
if(!seen[it->first])
dfs(it->first);
sorted.push_back(nod);
}
int main()
{
freopen("pitici.in","r",stdin);
freopen("pitici.out","w",stdout);
scanf("%d %d %d",&n,&m,&k);
for(i=1;i<=m;i++)
scanf("%d %d %d",&x,&y,&z),
v[x].push_back(make_pair(y,z)),
tr[y].push_back(make_pair(x,z));
dfs(1);
//dp[1].push_back(0);
/*for(i=sorted.size()-1;i>0;i--)
{
int node=sorted[i];
while(!heap.empty())
heap.pop();
for(vector<pair<int,int> >::iterator it=tr[node].begin();it!=tr[node].end();it++)
{
int newn=it->first;
dist[newn]=it->second;
ind[newn]=1;
heap.push(make_pair(dp[newn][0]+dist[newn],newn));
}
for(j=1;j<=k && !heap.empty();j++)
{
pair<int,int> el=heap.top();
heap.pop();
dp[node].push_back(el.first);
if(ind[el.second]<(int)dp[el.second].size())
heap.push(make_pair(dp[el.second][ind[el.second]++]+dist[el.second],el.second));
}
}*/
for(i=0;i<k;i++)
printf("%d ",dp[n][i]);
return 0;
}