Pagini recente » Cod sursa (job #2212357) | Cod sursa (job #1589058) | Cod sursa (job #2417078) | Cod sursa (job #995717) | Cod sursa (job #642487)
Cod sursa(job #642487)
#include<stdio.h>
#include<queue>
#define maxn 1022
#define mp make_pair
#define pss pair<short int,short int>
#define pb push_back
using namespace std;
FILE*f=fopen("pitici.in","r");
FILE*g=fopen("pitici.out","w");
int n,m,k,i,x,y,c,nod,sol[maxn];
vector< pss >G[maxn];
priority_queue<int>H[maxn];
queue<int>Q; int Gr[maxn];
int main () {
fscanf(f,"%d %d %d",&n,&m,&k);
for ( i = 1 ; i <= m ; ++i ){
fscanf(f,"%d %d %d",&x,&y,&c);
G[x].pb(mp(y,c)); ++Gr[y];
}
H[1].push(0); Q.push(1);
while ( !Q.empty() ){
nod = Q.front(); Q.pop();
if ( nod == n ) break ;
for ( vector< pss >::iterator itt = G[nod].begin() ; itt != G[nod].end() ; ++itt ){
--Gr[itt->first];
if ( !Gr[itt->first] ){
Q.push(itt->first);
}
}
while ( !H[nod].empty() ){
for ( vector< pss >::iterator itt = G[nod].begin() ; itt != G[nod].end() ; ++itt ){
H[itt->first].push(H[nod].top()+itt->second);
if ( H[itt->first].size() == k + 1 ){
H[itt->first].pop();
}
}
H[nod].pop();
}
}
i = 0;
for ( ; !H[n].empty() ; H[n].pop() ){
sol[++i] = H[n].top();
}
for ( i = k ; i >= 1 ; --i ){
fprintf(g,"%d ",sol[i]);
}
fprintf(g,"\n");
fclose(f);
fclose(g);
return 0;
}